smarch / watchtower
Laravel 5的用户/角色/权限的Shinboi Auth系统的前端
Requires
- php: >=5.5.9
- caffeinated/shinobi: ~2.0
- laravel/framework: ~5.1
- laravelcollective/html: ~5.1
README
Watchtower
对于Laravel 5.3,请使用develop分支。确保您已将必要的Shinobi行添加到您的用户模型中,以便权限可以正常工作。
为Laravel 5的Caffeinated/Shinobi RBAC授权系统提供的GUI(图形用户界面)包。
本页面旨在提供安装信息,有关使用方法,请参阅wiki。
概述
此包用于使用Shinobi角色基于访问控制系统管理/管理您的角色和权限表。
✋ 注意:Shinobi是此包的必需部分。此包仅是Shinobi包的GUI前端,此Watchtower包实际上并不提供任何授权功能。如果您尚未安装Shinobi包,它将在安装Watchtower时作为部分进行安装。
它将为您提供对角色 👥、权限 🔑 和可以访问它们的用户 👤 的完全控制。您将能够根据需要添加、编辑、更新、删除和同步所有三项。
默认情况下,Watchtower包含所有必要的视图,以启用角色 & 权限管理。它还提供必要的权限来保护您的站点,以确保只有允许执行管理功能的人才被允许。当然,这是通过Shinobi实现的,并且自然,所有视图和权限都是可配置的,您可以自由提供自己的视图并按应用程序的要求更改权限。
用户矩阵示例
安装
根据您是否已安装Shinobi,安装过程非常简单。安装Watchtower,添加服务提供程序,添加外观,运行数据库命令。完成。
✋ 注意:尽管Watchtower使用了一些包来正确主题化和布局管理区域,但它们通过cdnjs.com引用,并且不会本地安装。
Watchtower使用了以下包:Bootstrap、Bootstrap主题、JQuery、Pace、Sweetalert和Modernizr。如果您希望不使用cdn版本而使用本地版本,请修改master.layout文件以反映这些更改。(或者,您可以修改配置文件,将master.layout指向这些包的本地副本。)
🔲 Composer
对于Laravel 5.0 - 5.2,您可以直接在命令行运行以下命令。
composer require "smarch/watchtower"
对于Laravel 5.3,请在您的composer.json文件中添加以下行。
"smarch/watchtower": "@dev"
📝 服务提供者
一旦Composer安装了watchtower正常运行所需的包,您需要打开Laravel配置页面中的服务提供者,并添加Watchtower。为了正常工作,您需要引用所有3个服务提供者:Shinobi、HTML表单和Watchtower。
config/app.php
/* * Third Party Service Providers */ Caffeinated\Shinobi\ShinobiServiceProvider::class, // For RBAC Collective\Html\HtmlServiceProvider::class, // For Watchtower Forms to function Smarch\Watchtower\WatchtowerServiceProvider::class, // For Watchtower
📝 门面
虽然Watchtower本身不需要门面,但如果您想使用,也提供了一个。然而,Shinobi和Forms门面在Watchtower中被大量使用,所以请确保您将它们添加到您的门面中。
config/app.php
/* * Third Party Service Providers */ 'Form' => Collective\Html\FormFacade::class, // required for Watchtower Forms 'HTML' => Collective\Html\HtmlFacade::class, // required for Watchtower Forms 'Shinobi' => Caffeinated\Shinobi\Facades\Shinobi::class, // For RBAC functions //'Watchtower'=> Smarch\Watchtower\WatchtowerFacade::class, // not required, but available
📇 数据库迁移/种子
如果您之前没有安装Shinobi,您将需要运行迁移文件来正确设置并创建必要的表。从您的命令行(运行您的Artisan命令的地方)输入以下命令 php artisan vendor:publish 然后输入 php artisan migrate。这将正确创建您所需的表,并创建Watchtower配置文件(允许您从默认值更改任何视图/权限)。
php artisan vendor:publish
php artisan migrate
✋ 注意 如果您已经设置了角色和权限,可以跳过以下步骤,只需更改Watchtower配置文件以反映其应使用的权限,以允许功能。
为了允许限制和允许访问Watchtower的各种管理区域,您需要运行Watchtower的种子程序,它将在您的数据库中预填充权限和角色。
php artisan db:seed --class Smarch\Watchtower\Seeds\WatchtowerTableSeeder
📝 Shinobi使用要求
如果您现在正在安装Shinobi以及Watchtower,您还需要进行以下更改,以便您可以使用Shinobi的RBAC功能而不是Laravel默认使用自己的“门”授权方法。修改您的User模型以反映以下更改(删除Laravel的Authorizable协议和特性)
<?php namespace App; use Illuminate\Auth\Authenticatable; use Illuminate\Database\Eloquent\Model; use Illuminate\Auth\Passwords\CanResetPassword; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; use Caffeinated\Shinobi\Traits\ShinobiTrait; class User extends Model implements AuthenticatableContract, CanResetPasswordContract { use Authenticatable, CanResetPassword, ShinobiTrait;
对于Laravel 5.3,您的User模型应如下所示
<?php namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; use Caffeinated\Shinobi\Traits\ShinobiTrait; class User extends Authenticatable { use Notifiable; use ShinobiTrait;
完成所有这些后,您应该能够访问
🌎 http://yoursite/watchtower
并收到一个大大的警告。😄 这是正常的。这表明Shinobi正在工作并正确保护您的管理区域(Watchtower)。使用admin@change.me和密码(如果您使用了db:seed命令)登录,您将拥有完全访问权限。如果您数据库中已经有用户,请使用第一个用户登录以启用访问。默认情况下,db:seed命令将管理员角色与user->id = 1在数据库中关联。
✋ 注意 如果您尚未设置登录重定向,并且没有HOME路由和视图,您可能会遇到另一个路由错误。创建一个Home路由或重定向登录,或者再次输入http://yoursite/watchtower的URL。
❗ Laravel认证视图(登录等...)
Laravel 5.2
现在您可以使用Artisan使用以下命令创建所有您的认证视图和路由
php artisan make:auth
这将生成您需要的路由/视图,以便认证能够为您工作。
Laravel 5.1
由于Laravel在5.1中删除了默认的认证视图/路由(见下面路线的注释),Watchtower不附带启用。但是,您可以从Laravel中找到一些示例/信息Laravel登录/认证视图,这将提供您需要的路由/视图,以允许登录和注册。
您需要以下路由进行身份验证。(也提供在上面的 Laravel auth 链接中)将这些路由复制到您的 app/routes.php 文件中 (或您定义路由的地方)。
routes.php
// Authentication routes... Route::get('auth/login', 'Auth\AuthController@getLogin'); Route::post('auth/login', 'Auth\AuthController@postLogin'); Route::get('auth/logout', 'Auth\AuthController@getLogout'); // Registration routes... Route::get('auth/register', 'Auth\AuthController@getRegister'); Route::post('auth/register', 'Auth\AuthController@postRegister'); // Password reset link request routes... Route::get('password/email', 'Auth\PasswordController@getEmail'); Route::post('password/email', 'Auth\PasswordController@postEmail'); // Password reset routes... Route::get('password/reset/{token}', 'Auth\PasswordController@getReset'); Route::post('password/reset', 'Auth\PasswordController@postReset');
✋ 注意 为了方便,默认的 Laravel 身份验证视图已包含在 Watchtower 的 "vendor\smarch\watchtower\src\Views\auth" 文件夹中。只需将 auth 文件夹复制粘贴到您的 "root\resources\views" 文件夹即可启用它们。
🔱 为什么叫“Watchtower”?
我已经是一名 DC 粉丝超过 30 年了。Watchtower 是正义联盟用来监控/管理超级英雄的漂浮太空站。 ...本可以更糟。我一度想用 OMAC 这个名字。😄