windwalker / warder
Requires
- lyrasoft/unidev: ~1.0
- windwalker/phoenix: ~1.0
Suggests
- hybridauth/hybridauth: Install 2.* to support social login.
This package is not auto-updated.
Last update: 2019-02-20 18:52:20 UTC
README
通过 Composer 安装
将其添加到 composer.json
并运行 composer update
。
{ "windwalker/warder": "1.*" }
注册包
将 warder 注册到 Windwalker,您可以准备一个 admin
和 front
包来支持后端和前端。
// 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/Migration
和 vendor/windwalker/warder/src/Seed
文件复制到
resources/migration
和 resources/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
如果您的包不是名为 admin
和 front
,请在此配置中设置包别名。
注册路由
将 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
,您将看到一个自动获取的登录页面。
您可以对 admin
包做同样的事情
// src/Admin/AdminPackage.php // ... public function loadRouting() { // ... $routes = array_merge($routes, WarderHelper::getAdminRouting()); return $routes; } // ...
然后您可以在 /{admin@routing}/users
中看到用户 admin
覆盖对象和模板
您可以在您的包中覆盖 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 密钥和密钥。
当社交提供程序设置为启用时,按钮将自动出现在登录页面上
如果您使用
Additional Providers
,例如GitHub
,您必须将提供者类文件从vendor/hybridauth/hybridauth/additional-providers
复制到vendor/hybridauth/hybridauth/hybridauth/Hybrid/Providers