ラボ > FuelPHP:auth関連

FuelPHPのユーザーが権限を持っているかチェック(\Auth::has_access())

作成日:2018-04-27, 更新日:2018-08-13

基本

1.アクセス権限を設定する
2.各ページで権限チェックを行う

めも

よくあるのは、下記の3種に対して振り分けをすると思う。
・ログインしていない人
・ログイン中の一般ユーザー
・ログイン中の管理人

この程度なら「\Auth::check()」でログインしている・していないを振り分けて「group」で一般・管理人を振り分ければいい。

▼ちょっと特殊な状況や、ログイン中でも細分化したい場合にrolesに意味が出てくる。
・一般ユーザーは自分の情報のみ見れる
・運営者(平社員の管理人)は、全ユーザーの情報は見れる
・運営者(役職ありの管理人)は、全ユーザーの情報を編集できる
・開発(管理人)は、全ユーザーの情報を編集できるし、削除もできる

アクセス権限を設定

「fuel/app/config/simpleauth.php」で「groups」と「roles」を設定する

▼例

'groups' => array(
    0  => array('name' => 'Guests',         'roles' => array()),
   10  => array('name' => 'Users',          'roles' => array('user')),
  100  => array('name' => 'Administrators', 'roles' => array('user', 'admin')),
),

'roles' => array(
  'user'  => array( 'dashbord' => array('read') ),
  'admin' => array( 'dashbord' => array('update'), 'controlpanel' => array('read', 'update')),
),

・「group=10」の「ユーザー」は「roles(user)」によって「dashbord.read」が設定される。
・「group=100」の「ユーザー」は「roles(user, admin)」によって「dashbord.read、dashbord.update、controlpanel.read、controlpanel.update」が設定される。

各ページで権限チェック

▼ダッシュボードページの更新できる人と出来ない人で処理を振り分けたい

if ( \Auth::has_access('dashbord.update') ) {
  // 「dashbord.read」が付与されたユーザー
}
else {
  // 「dashbord.read」が付与されていないユーザー
}

※「dashbord」も「read」も任意の文字列。「ダッシュボードページの更新」だからといって「dashbord.update」にする必要は無い。