selfreliance/fixroles

用于处理 Laravel 5 中角色和权限的强大包 [修复]

1.0.35 2017-11-30 11:06 UTC

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