users
表具有外键role_id
,roles
表包含name
字段,种子主持人和客户端。我正在开发一个api,我有TicketController
,只有客户端可以创建它们。现在存储在TicketController
中的样子:
public function store(Request $request) : TicketResource
{
$ticket = new Ticket();
$ticket->title = $request->title;
$ticket->desciption = $request->description;
$ticket->user_id = auth()->user()->id;
$ticket->department_id = $request->department_id;
$ticket->save;
return new TicketResource($ticket);
}
在api.php
中的路由是
Route::group(['middleware' => 'auth:api'], function(){
Route::post('tickets', 'Api\TicketController@store');
});
答案 0 :(得分:2)
如果您要创建API,我强烈建议您使用Passport。刚开始使用时有点不方便,但功能非常强大。它具有的功能之一是“作用域”,它使您可以根据给定的作用域来限制用户的操作。
使用范围,您可以根据用户角色为不同的用户提供不同的范围。然后,在您的路线中,您可以执行以下操作。
Route::group(['middleware' => ['auth:api', 'scopes:can-store'] ], function(){
Route::post('tickets', 'Api\TicketController@store');
});
您甚至可以保持简单,并为作用域命名为用户角色
Route::group(['middleware' => ['auth:api', 'scopes:editor,admin'] ], function(){
Route::post('tickets', 'Api\TicketController@store');
});