laravel 開発日記 第5回 ~ ログイン画面の修正 ~

今回は、
(1)ユーザーログイン画面から「ユーザー新規登録(Register)」を削除
(2)管理者権限でログインした時のみ、ユーザー新規登録への導線を表示
(3)ユーザー新規登録画面を表示するとき、ユーザー権限を確認して、管理者以外は見せないようにする。
を、やろうと思います。

まずは、現在ステージングアドレスを開くと、welcome画面が表示されるので、これをログイン画面が表示されるように修正します。

【作業ファイル:/app/Http/routes.php】

Route::get('/', 'WelcomeController@index');
Route::get('home', 'HomeController@index');

↓

Route::get('/', 'HomeController@index');

これで、ステージングを開くとログイン画面が出てくるようになりました。

次にログイン画面を修正します。

【作業ファイル:/resources/views/app.blade.php】

@if (Auth::guest())
    <li><a href="{{ url('/auth/login') }}">Login</a></li>
    <li><a href="{{ url('/auth/register') }}">Register</a></li>
@else
    <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{ Auth::user()->name }} <span class="caret"></span></a>
        <ul class="dropdown-menu" role="menu">
            <li><a href="{{ url('/auth/logout') }}">Logout</a></li>
        </ul>
    </li>
@endif

↓

@if (Auth::guest())
    <li><a href="{{ url('/auth/login') }}">Login</a></li>
@else
    @if (Auth::user()->level == 'admin')    //ユーザー権限が管理者の場合のみ表示
        <li><a href="{{ url('/auth/register') }}">Register</a></li>
    @endif
    <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{ Auth::user()->name }} <span class="caret"></span></a>
        <ul class="dropdown-menu" role="menu">
            <li><a href="{{ url('/auth/logout') }}">Logout</a></li>
        </ul>
    </li>
@endif

よく見たら、ログインのテンプレートではなく、 上位階層のappテンプレートで、ログインしてないときに表示する設定になっていた模様。 未ログイン時に表示から、ログイン時、さらに権限がadminだった場合表示するようにしました。
一応、他のユーザーでもログインして、表示されないことが確認できました。

で、管理者でログイン後、ユーザー新規登録画面を開こうとしたところ、 /homeに飛ばされて、notFoundが表示される・・・。
なるほど。もともとの仕組みで、ログインされてる状態で新規登録画面を開くと/homeに飛ぶ仕様なのですね。

次回、新規登録画面を開いたときのプログラムの流れを追いつつ、管理者のみリダイレクトされないように修正していきます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です