前回「【laravel-admin】Laravel-adminで新規テーブルを作成しCRUD画面を追加する方法」でテーブルを作成し画面を追加しました。
今回は作成したテーブルの操作画面をメニューを追加しようと思います。
ついでにLaravel-adminにおけるrole(役割)とpermission(権限)について書いていきたいと思います。
Laravel-adminのpermissionとは
Laravel-adminでのpermissionとは、アクセス許可に関する制御を行う機能です。基本的にrole(役割)に付与して使用することになります。
Laravel-adminのトップページのサイドメニューにpermissionに関するメニューがあります。
初期状態では以下のような内容になっていると思います。
ここで指定されている「Route」が制御に関する項目になります。
現在青い背景に白文字で描かれているのがリクエスト種別です。
新規作成の際に「http_method」を空白で登録すると、すべてのリクエストが行える「ANY」となります。
そのあとに続くグレーで囲まれた文字列が、アクセス許可の対象パスとなります。
インストール後自動で作成されるadminユーザは、「role」に「Administrator」が付与されており、
「Administrator」の「permission」は「All permission」が付与されているため、admin配下の全てのパスにアクセスできます。
permissionによってアクセス許可を行う
アクセス許可機能を実際に見ていくためにpermissionを作成しユーザに付与したいと思います。
サイドメニューから以下のような内容でpermissionを作成して下さい。
上記内容だとログイン・ログアウトのみが実行可能なpermissionです。
このpermissionをユーザに付与し再度ログインし、「<ホスト名>:8000/admin/auth/test」にアクセス制御がかかって以下の画面が表示されていることを確認します。
アクセス制限がかかり閲覧できない設定になっています。
「HTTP path」に「/auth/test」を設定すればアクセスが可能になります。
permissionの使い方は先述の通り、コントローラ等で設定したURLに対し、直接指定することでアクセスの許可を行う形になります。
Laravel-adminのroleとは
permissionがアクセス許可の機能に対して、roleではmenuの画面表示を制御することが可能です。
左メニューからroleを作成します。
そしてroleにはpermissionを付与することが可能です。先ほど作成したpermissionを選択し、作成します。
作成したroleをユーザに付与するとpermissionを選択しなくてもroleに紐づいたpermissionが与えられます。
roleによって画面制御を行う
それではroleによって画面制御を行っていきます。
左メニューの「Menu」を選択し右ボックスから新規メニューを作成します。
画面制御に関しては「URI」と「role」になります。今回はURIに「/auth/test」、roleに「Test」を選択しました。
こうすることで画面に追加したメニューが表示されるはずです。
現在の設定では、作成したtest_usersページは「role」と「Administrator」のroleでしか見れません。
Laravel-adminでは上記のような流れでroleを使って画面制御を行います。
まとめ
permissionやroleを一通り触ってみた感想として、ユーザ作成の際にpermissionの入力があるために、
roleとpermissionの区別・追加分けを分かりにくくしている印象を受けました。
roleを持たないユーザはデフォルト権限みたいな感じにして、ユーザに付与するのはroleだけで十分な気がします。
あと、初期のpermissionのsettingやmanagementはログイン・ログアウトの権限がないために機能できていないなど、
デフォルトからすべて設定が完了しているとは言い難いので、ある程度理解してカスタマイズする必要はありそうです。
また、ログイン認証の方法や対象のテーブルなど、カスタマイズは可能そうなのでそのあたりも書いていきたいと思います。