Laravel 没有包的权限
Laravel Permissions without package
我正在学习本教程 https://learn2torials.com/a/laravel-authentication-based-on-roles。
工作正常而且实现起来非常简单,但我想隐藏一些管理员角色的路由,所以我需要实现权限,比如 'can_view'、'can_update' 等。我读了一些关于盖茨和政策,但我仍然感到困惑。
是否有扩展本教程的简单方法?我想避免使用包 Spatie/Permissions.
提前致谢!
您可以使用策略轻松解决此问题。
只需在 app\Policies folder
中使用您的策略定义创建一个文件:
<?php
namespace App\Policies;
use App\Models\User;
use App\Models\Expedient;
class ExpedientPolicy
{
/**
* Editing allowed for the person in charge of an open expedient
* @param \App\Models\User $user
* @param \App\Models\Expedient $expedient
* @return bool
*/
public function editExp(User $user, Expedient $expedient) {
return (!$expedient->exp_close && ($expedient->responsible == $user->id));
}
}
并在app\Providers\AuthServiceProvider.php
中注册:
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
Expedient::class => ExpedientPolicy::class,
];
现在您可以将此政策与
一起使用
@can('editExp', $expedient)
我正在学习本教程 https://learn2torials.com/a/laravel-authentication-based-on-roles。
工作正常而且实现起来非常简单,但我想隐藏一些管理员角色的路由,所以我需要实现权限,比如 'can_view'、'can_update' 等。我读了一些关于盖茨和政策,但我仍然感到困惑。
是否有扩展本教程的简单方法?我想避免使用包 Spatie/Permissions.
提前致谢!
您可以使用策略轻松解决此问题。
只需在 app\Policies folder
中使用您的策略定义创建一个文件:
<?php
namespace App\Policies;
use App\Models\User;
use App\Models\Expedient;
class ExpedientPolicy
{
/**
* Editing allowed for the person in charge of an open expedient
* @param \App\Models\User $user
* @param \App\Models\Expedient $expedient
* @return bool
*/
public function editExp(User $user, Expedient $expedient) {
return (!$expedient->exp_close && ($expedient->responsible == $user->id));
}
}
并在app\Providers\AuthServiceProvider.php
中注册:
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
Expedient::class => ExpedientPolicy::class,
];
现在您可以将此政策与
一起使用@can('editExp', $expedient)