windwalker/warder

此包已被弃用,不再维护。作者建议使用 lyrasoft/warder 包。

Windwalker 的使用包。

1.6.2 2019-02-05 05:56 UTC

README

通过 Composer 安装

将其添加到 composer.json 并运行 composer update

{
    "windwalker/warder": "1.*"
}

注册包

将 warder 注册到 Windwalker,您可以准备一个 adminfront 包来支持后端和前端。

// src/Windwalker/Windwalker.php

use Phoenix\PhoenixPackage;
use Lyrasoft\Warder\WarderPackage;

// ...

    public static function loadPackages()
	{
		return array(
			'system'  => new SystemPackage,
			'phoenix' => new PhoenixPackage, // You must install phoenix first
			'warder'  => new WarderPackage, // Add warder package
			
			// Prepare an admin and frontend package
			'admin'   => AdminPackage,
			'front'   => FrontPackage
		);
	}
	
// ...

迁移

运行 php bin/console migration migrate -p=warder --seed

或者将 vendor/windwalker/warder/src/Migrationvendor/windwalker/warder/src/Seed 文件复制到

resources/migrationresources/seed

您可以为支持更多配置文件添加自己的列。

复制配置

vendor/windwalker/warder/src/config.dist.yml 复制到 etc/package/warder.yml

或者复制以下配置代码

user:
    login_name: username
    default_group: registered
    session_name: user

table:
    users: users
    user_socials: user_socials
    groups: groups
    user_group_maps: user_group_maps
    actions: actions

methods:
    warder: \Lyrasoft\Warder\Authentication\Method\WarderMethod
    # social: \Lyrasoft\Warder\Authentication\Method\SocialMethod

frontend:
    package: front
    view:
        extends: _global.html
    redirect:
        login: home
        logout: login
        forget: login
    login:
        return_key: return
    language:
        prefix: warder.

admin:
    package: admin
    view:
        extends: _global.admin.admin
    redirect:
        login: home
        logout: login
    login:
        return_key: return
    language:
        prefix: warder.

class:
    handler: Lyrasoft\Warder\Handler\UserHandler
    data: Lyrasoft\Warder\Data\UserData

如果您的包不是名为 adminfront,请在此配置中设置包别名。

注册路由

将 Warder 的路由配置和命名空间别名添加到您的包中,以便您的包可以自动获取 Warder 页面。

// src/Front/FrontPackage.php

use Lyrasoft\Warder\Helper\WarderHelper;

// ...

	// ...

	public function loadRouting()
	{
		// ...

		$routes = array_merge($routes, WarderHelper::getFrontendRouting());

		return $routes;
	}

现在转到 /{front@routing}/login,您将看到一个自动获取的登录页面。

p-2016-02-28-001

您可以对 admin 包做同样的事情

// src/Admin/AdminPackage.php

// ...

    public function loadRouting()
	{
		// ...

		$routes = array_merge($routes, WarderHelper::getAdminRouting());

		return $routes;
	}
	
// ...

然后您可以在 /{admin@routing}/users 中看到用户 admin

p-2016-02-28-002

p-2016-02-28-003

覆盖对象和模板

您可以在您的包中覆盖 warder 的对象。例如,创建 Front/Controller/User/LoginGetController.php 将优先加载于 Windwalker/Warder/Controller/User/LoginGetController.php。您可以在此类中覆盖某些内容。

<?php

namespace Front\Controller\User;

class LoginGetController extends \Lyrasoft\Warder\Controller\User\LoginGetController
{
	protected function prepareModelState(Model $repository)
	{
		// Do something
		
		parent::prepareModelState($repository);
	}
}

以下文件可以覆盖

前端

# Controller
src/Controller/User/AuthController.php
src/Controller/User/Forget/CompleteGetController.php
src/Controller/User/Forget/ConfirmGetController.php
src/Controller/User/Forget/ConfirmSaveController.php
src/Controller/User/Forget/RequestGetController.php
src/Controller/User/Forget/RequestSaveController.php
src/Controller/User/Forget/ResetGetController.php
src/Controller/User/Forget/ResetSaveController.php
src/Controller/User/LoginGetController.php
src/Controller/User/LoginSaveController.php
src/Controller/User/LogoutSaveController.php
src/Controller/User/Profile/GetController.php
src/Controller/User/Profile/SaveController.php
src/Controller/User/Registration/ActivateSaveController.php
src/Controller/User/Registration/RegistrationGetController.php
src/Controller/User/Registration/RegistrationSaveController.php 
src/Controller/User/SocialLoginController.php

# Form
src/Form/Profile/EditDefinition.php
src/Form/User/ForgetConfirmDefinition.php
src/Form/User/ForgetRequestDefinition.php
src/Form/User/LoginDefinition.php
src/Form/User/RegistrationDefinition.php
src/Form/User/ResetDefinition.php

# Model
src/Model/ProfileModel.php
src/Model/UserModel.php

# Template
src/Templates/profile/profile.blade.php
src/Templates/user/forget/complete.blade.php
src/Templates/user/forget/confirm.blade.php
src/Templates/user/forget/request.blade.php
src/Templates/user/forget/reset.blade.php
src/Templates/user/login.blade.php
src/Templates/user/mail/forget.blade.php
src/Templates/user/mail/registration.blade.php
src/Templates/user/registration.blade.php

# View
src/View/Profile/ProfileHtmlView.php
src/View/User/UserHtmlView.php

管理端

# Controller
src/Admin/Controller/User/GetController.php
src/Admin/Controller/User/LoginGetController.php
src/Admin/Controller/User/LoginSaveController.php
src/Admin/Controller/User/LogoutSaveController.php
src/Admin/Controller/User/SaveController.php
src/Admin/Controller/Users/Batch/ActivateController.php
src/Admin/Controller/Users/Batch/BlockController.php
src/Admin/Controller/Users/Batch/UnblockController.php
src/Admin/Controller/Users/Batch/UpdateController.php
src/Admin/Controller/Users/BatchController.php
src/Admin/Controller/Users/CopyController.php
src/Admin/Controller/Users/DeleteController.php
src/Admin/Controller/Users/FilterController.php
src/Admin/Controller/Users/GetController.php

# Form
src/Admin/Form/User/EditDefinition.php
src/Admin/Form/User/LoginDefinition.php
src/Admin/Form/Users/BatchDefinition.php
src/Admin/Form/Users/FilterDefinition.php

# Model
src/Admin/Model/UserModel.php

# Templates
src/Admin/Templates/user/login.blade.php
src/Admin/Templates/user/toolbar.blade.php
src/Admin/Templates/user/user.blade.php
src/Admin/Templates/users/batch.blade.php
src/Admin/Templates/users/modal.blade.php
src/Admin/Templates/users/toolbar.blade.php
src/Admin/Templates/users/users.blade.php

# View
src/Admin/View/User/UserHtmlView.php
src/Admin/View/Users/UsersHtmlView.php

覆盖 UserHandler 和 UserData

更改配置文件中的 class.data,您可以添加一些新方法

# etc/package/warder.yml

# ...

class:
    handler: Lyrasoft\Warder\Handler\UserHandler
    data: MyUserData
class MyUserData extends \Lyrasoft\Warder\Data\UserData
{
    const CUSTOMER = 0;
    const FREELANCER = 1;

    public function isFreelancer()
    {
        return (bool) $this->freelancer == static::FREELANCER;
    }
}
$user = User::get($id);

$user->isFreelancer();

社交登录

Warder 使用 Hybrid Auth 支持多个 OAuth 社交登录。

请首先安装 "hybridauth/hybridauth": "^2.6"

Composer 更新后,将 vendor/wainwaler/warder/src/secret.dist.yml 复制到 etc/secret.yml

#Social Login
social_login:
    facebook:
        enabled: false
        id:
        secret:
        scope: email
    twitter:
        enabled: false
        key:
        secret:
        scope:
    google:
        enabled: false
        id:
        secret:
        scope: 'https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email'
    yahoo:
        enabled: false
        key:
        secret:
        scope:
    github:
        enabled: false
        id:
        secret:
        scope:

目前 Warder 仅支持 Facebook、Twitter、Google、Yahoo 和 GitHub。

请参阅 文档 了解如何注册应用程序并获取 API 密钥和密钥。

当社交提供程序设置为启用时,按钮将自动出现在登录页面上

p-2016-02-28-004

如果您使用 Additional Providers,例如 GitHub,您必须将提供者类文件从 vendor/hybridauth/hybridauth/additional-providers 复制到 vendor/hybridauth/hybridauth/hybridauth/Hybrid/Providers