smarch/watchtower

Laravel 5的用户/角色/权限的Shinboi Auth系统的前端

安装次数: 2,931

依赖项: 0

建议者: 0

安全: 0

星标: 52

关注者: 12

分支: 21

开放问题: 7

语言:HTML

类型:

v1.1.5.4 2016-08-12 14:02 UTC

README

Software License Laravel 5.1 Packagist Version Total Downloads GitHub stars

Watchtower

对于Laravel 5.3,请使用develop分支。确保您已将必要的Shinobi行添加到您的用户模型中,以便权限可以正常工作。

为Laravel 5Caffeinated/Shinobi RBAC授权系统提供的GUI(图形用户界面)包。

enter image description here

本页面旨在提供安装信息,有关使用方法,请参阅wiki。

概述

此包用于使用Shinobi角色基于访问控制系统管理/管理您的角色和权限表。

注意:Shinobi是此包的必需部分。此包仅是Shinobi包的GUI前端,此Watchtower包实际上并不提供任何授权功能。如果您尚未安装Shinobi包,它将在安装Watchtower时作为部分进行安装。

它将为您提供对角色 👥、权限 🔑 和可以访问它们的用户 👤 的完全控制。您将能够根据需要添加、编辑、更新、删除和同步所有三项。

默认情况下,Watchtower包含所有必要的视图,以启用角色 & 权限管理。它还提供必要的权限来保护您的站点,以确保只有允许执行管理功能的人才被允许。当然,这是通过Shinobi实现的,并且自然,所有视图和权限都是可配置的,您可以自由提供自己的视图并按应用程序的要求更改权限。

用户矩阵示例

The User Matrix

安装

根据您是否已安装Shinobi,安装过程非常简单。安装Watchtower,添加服务提供程序,添加外观,运行数据库命令。完成。

注意:尽管Watchtower使用了一些包来正确主题化和布局管理区域,但它们通过cdnjs.com引用,并且不会本地安装

Watchtower使用了以下包:BootstrapBootstrap主题JQueryPaceSweetalertModernizr。如果您希望不使用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 这个名字。😄