New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
User 新增 Role 與 ACL #55
Comments
如果沒有權限導回登入頁面這段感覺怪怪的,應該是顯示沒有權限就可以了 |
這個套件沒問題,幾個地方提一下
|
最後我好像忘了 Vue 處理方式,這邊有什麼解法比較好嗎? 我想到下面這兩種
|
先說 2 好了,因為它牽扯到其他的答案,在一個 function 裡面還會需要 唯讀 / 寫入權限以外的權限管理方式?有什麼例子呢? 我在 KK 做的後台的經驗,目前針對單一頁面控制 read / write 的限制其實就蠻夠了,蠻少會在一個功能頁面裡面,還要分不同的權限的需求 又或者換一個方式來想,有沒有可能先從簡進行,基本上這個 library 的彈性很高,如果真的有這個需求再額外增加上去呢? |
那就先從簡進行吧 |
預計將使用 laravel-permission 來去完成這個功能。 前端相關新增功能新增 Role 頁面、擴充 User 頁面與新增顯示 403 的頁面。 在 Role 頁面中,可讓使用者新增新的 Role,並可編輯所擁有的權限。權限編輯方式為用 CheckBox 列出全部權限讓使用者勾選。 在 User 頁面中,新增設定 User Role 的地方,支援一個 User 可擁有多個 Role。 檢查頁面權限Axios 偵測到 403 就直接導向到 403 的頁面。 後端相關DB直接採用 laravel-permission 所設計的 Table,但於 權限命名方式格式:" Actions:
涵蓋範圍所有 Controller 內的所有 確認權限使用套件內建的 Middleware 進行驗證。 class RoleController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
function __construct()
{
$this->middleware('permission:role-list');
$this->middleware('permission:role-create', ['only' => ['create','store']]);
$this->middleware('permission:role-edit', ['only' => ['edit','update']]);
$this->middleware('permission:role-delete', ['only' => ['destroy']]);
}
} UnAuthorized Handler新增於 public function render($request, Exception $exception)
{
if ($exception instanceof Spatie\Permission\Exceptions\UnauthorizedException) {
return $this->unauthorized($request, $exception);
}
return parent::render($request, $exception);
}
private function unauthorized($request, Exception $exception)
{
if ($request->expectsJson()) {
return response()->json([
'success' => false,
'message' => 'Forbidden',
'data' => [],
], 403);
}
flash()->warning($exception->getMessage());
return redirect('/login');
} |
LGTM |
LGTM+1 |
@puckwang 這個你要實作還是我請資訊組的人幫忙?只是他們最近可能會忙一點 |
我再自己實作好了 |
預計將使用 laravel-permission 來去完成這個功能。
前端相關
新增 Role 與擴充 User 頁面。
在 Role 頁面中,可讓使用者新增新的 Role,並可編輯所擁有的權限。權限編輯方式為用 CheckBox 列出全部權限讓使用者勾選。
在 User 頁面中,新增設定 User Role 的地方,支援一個 User 可擁有多個 Role。
後端相關
DB
直接採用 laravel-permission 所設計的 Table,但於
permission
中新增description
用於說明該權限用處使用。權限命名方式
格式:"
Controller Name
-Method Name
"範例:UserController@store = "user-store"
涵蓋範圍
所有 Controller 內的所有
public
方法都要有相對應的權限。確認權限位置
在此有兩中方法實作,都先列出來,再來討論哪種比較適合。
方法一:於 Request 驗證
方法二:於 Middleware 驗證
簡單來說就相下面這樣。
我目前是傾向用『方法二』,因為『方法一』手續比較多,檔案也會變多。
UnAuthorized Handler
新增於
app/Exceptions/Handler.php
再麻煩 @hashman 看看有沒有問題或需要補充的地方。
The text was updated successfully, but these errors were encountered: