Laravelで画面制御を行なっており、middlewareで以下のように記述しました。
ログインユーザーの情報として、以下となっています。
user_id ユーザーID
role_list_flg ユーザー一覧画面権限フラグ 0or1 0=権限なし 1=権限あり
role_create_flg ユーザー登録画面権限フラグ 0or1 0=権限なし 1=権限あり
public function handle($request, Closure $next) { // ユーザー情報を変数にセット $user = Auth::user(); ### ユーザー権限 // ユーザー一覧権限 if (Route::currentRouteName() == 'user.index') { // ユーザーが一覧権限を持っていない(role_list_flgが0) if ($user->role_list_flg !== 1) { // エラーログ // ユーザーが画面アクセスの権限を持っていなければホーム画面にリダイレクト return redirect()->route('home'); } } // ユーザー登録権限 if (Route::currentRouteName() == 'user.register.view' || Route::currentRouteName() == 'user.register.post' ) { // ユーザーが登録権限を持っていない(role_create_flgが0) if ($user->role_create_flg !== 1) { // ユーザーが画面アクセスの権限を持っていなければホーム画面にリダイレクト return redirect()->route('home'); } }
上記のように現在は一つ一つの処理を書いて、アクセスしたルート名と取得したルート名が一致→ユーザーが権限を持っていなければホーム画面にリダイレクトするとしてます。
ただ、投稿の場合、コメントの場合...と処理が続いていくので、似たような記述が増えてコードが冗長と思いました。
なので、上記のコードをどのようにリファクタリングしたらよろしいでしょうか?
※上記の内容で動作することは確認済み。