laravel-admin-utils / authorization
laravel-admin 的授权工具
v1.0.6
2024-08-24 01:48 UTC
Requires
README
预览
安装
composer require laravel-admin-utils/authorization
发布资源:
php artisan vendor:publish --provider="Elegant\Utils\Authorization\AuthorizationServiceProvider"
初始化数据
php artisan authorization:init
‘管理员’拥有所有操作和菜单权限
打开 https:///auth/roles
来管理角色
在 https:///auth/users
中,您可以给管理员添加角色
通过路由进行动作访问控制
如果您正在使用 laravel-admin 动作并需要进行访问控制,以下以用户的‘复制’操作为例
-
创建动作
app/Admin/Actions/Replicate.php
namespace App\Admin\Actions; use Elegant\Utils\Actions\Response; use Elegant\Utils\Actions\RowAction; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\DB; class Replicate extends RowAction { /** * @var string */ protected $method = 'POST'; /** * @return array|null|string */ public function name() { return 'replicate'; } // getHandleUrl() or handle(Model $model) choose one of the two //========================if permission judgment is required use the method=========================== /** * @return string */ public function getHandleUrl() { return $this->parent->resource().'/'.$this->getKey().'/replicate'; } //============If you don't need permission judgment, use the method================= ///** // * @param Model $model // * // * @return Response // */ //public function handle(Model $model) //{ // try { // DB::transaction(function () use ($model) { // $model->replicate()->save(); // }); // } catch (\Exception $exception) { // return $this->response()->error('replication failed!: ' . $exception->getMessage() . ')'; // } // return $this->response()->success('replication successful!')->refresh(); //} /** * @return void */ public function dialog() { $this->question('confirm copy?'); } }
-
控制器复制方法
use Elegant\Utils\Http\Controllers\HandleController; class UserController extends AdminController { public function replicate($id) { // If permission judgment is required, perform logical processing here try { $model = User::withTrashed()->find($id); DB::transaction(function () use ($model) { $model->replicate()->save(); }); } catch (\Exception $exception) { return $this->response()->error("replication failed!: {$exception->getMessage()}")->send(); } return $this->response()->success('replication successful!')->refresh()->send(); // If you don't need permission judgment, handle it in App\Admin\Actions\Replicate::handle() logic //return $this->handleAction(); } }
关于开关权限
由于 laravel-admin 自身的开关操作是一种更新操作,权限无法独立判断
本节提供另一种动作方法来实现开关操作权限控制,请参考此处