selfreliance / fixroles
用于处理 Laravel 5 中角色和权限的强大包 [修复]
1.0.35
2017-11-30 11:06 UTC
Requires
- php: >=5.5.9
- illuminate/support: ~5.0
- selfreliance/adminamazing: ^1.0
- selfreliance/adminrole: ^1.0
README
如何安装
通过 composer 安装
composer require selfreliance/fixroles
配置、迁移和种子
php artisan vendor:publish --provider="Selfreliance\fixroles\RolesServiceProvider" --force php artisan migrate php artisan db:seed --class="CreateOrAttachAdmin"
编辑模型 User (App/User.php)
use Selfreliance\fixroles\Traits\HasRole; use Selfreliance\fixroles\Contracts\HasRole as HasRoleContract; class User extends Authenticatable implements HasRoleContract { use HasRole; protected $fillable = [ 'role_id', // ] // }
编辑模型 Kernel (App/Http/Kernel.php)
从 protected $middlewareGroups 转移到 protected $middleware
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Session\Middleware\StartSession::class,
添加到 $routeMiddleware
'CheckAccess' => \Selfreliance\Adminamazing\middleware\CheckAccess::class
用法
创建角色
use Selfreliance\fixroles\Models\Role; $accessible = array( config('adminamazing.path'), "adminrole", "adminmenu" ); $adminRole = Role::create([ 'name' => 'Admin', 'slug' => 'admin', 'accessible_pages' => json_encode($accessible) ]);
由于
Slugable特性,如果出现错误,例如在 slug 参数中留下空格,它将被自动替换为点,这是由于str_slug函数。
附加和移除角色
use App\User; $user = User::find($id); $user->attachRole($adminRole->id); // you can pass id, name or slug
$user->detachRole($adminRole->id); // you can pass id, name or slug
检查角色
if($user->hasRole($adminRole->id)) // 可以传递 id、名称或 slug { // }
Blade 扩展
有四个 Blade 扩展。基本上,它是经典 if 语句的替代品。
@checkrole('admin') // @if(Auth::check() && Auth::user()->checkRole($prefix)) // user role has the specified prefix => admin @endcheck