1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【第4回】

Last updated at Posted at 2020-10-09

#制作環境

Windows 10
Laravel : 6.18.35
Laravel/ui : 1.0
Laravel-mix : 5.0.1
Bootstrap : 4.0.0
MDBootstrap : 4.19.1
chart.js : 2.9.3
XAMPP
PHP : 7.4.3
Visual Studio Code

#関連記事

Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【第1回】
Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【第2回】
Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【第3回】
Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【第5回】
Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【第6回】
Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【第7回】
Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【最終回】

#はじめに
この記事はプログラミングをはじめたばかりの素人が、できたことをメモするのに利用しています。
内容には誤りがあるかもしれません。

記事を作成するにあたり、以下のサイトを参考にしています。
こちらの方が詳しいので、当方で付け加えている要件が不要であれば、以下を参考にした方がいいと思います。

長くなるので、何回かに分けて記事を投稿します。

#ルーティングの編集
routes内にある、web.phpを開きます。
laravel/ui の -authで認証機能をインストールしているので、Auth::routes();が既に設定されているはずです。
このAuth::routes();だけで、user側のログイン、ログアウト、新規登録等のルーティングがされています。

以下のように、ルーティングを追加してください。

web.php
Route::get('/', function () {
    return view('welcome');
});

// ユーザー側の認証に関するルーティング
Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

// 管理者用の認証に関するルーティング
Route::prefix('admin')->namespace('Admin')->name('admin.')->group(function(){
    Auth::routes();
});

これはwelcomeページ表示用のルーティングです。
最初からあるルーティングです。

Route::get('/', function () {
    return view('welcome');
});

こちらがユーザー側の認証に関するルーティングです。

Auth::routes();

こちらは/homeにアクセスした時のルーティングです。
->name('home')と記述することで、ルーティングに名前を付けています。

Route::get('/home', 'HomeController@index')->name('home');

こちらが管理者側の認証に関するルーティングです。

Route::prefix('admin')->namespace('Admin')->name('admin.')->group(function(){
    Auth::routes();
});

#ルーティングの確認
ここまで作成したら、一度ルーティングの中身を確認してみてください。
ターミナルで以下を実行すると、ルーティングを一覧で確認できます。

php artisan route:list

以下を実行することで、ルーティングをテキストファイルで出力することもできます。
sample部分は好きに変更してください。

php artisan route:list > sample.txt

#コントローラーの複製
app\Http\Controllers に、新たにAdminディレクトリを作成してください。
作成したら、app\Http\ControllersにあるUser用のAuthディレクトリを、Adminディレクトリに丸ごとコピーします。

auth.jpg

コピーが完了したら、namespaceが全てApp\Http\Controllers\Auth になってるので、コピーしたファイルのnamespaceを全て、App\Http\Controllers\Admin\Auth に変更します。

#ビューの複製
resources\views に新たにadminディレクトリを作成し、resources\views\authをコントローラと同じように作成したディレクトリにコピーします。

auth2.jpg

#ルート先の変更
ビューをコピー後、resources\views\admin\auth\register.blade.php を開き、actionの記述を修正します。

####変更前

register.blade.php
<form method="POST" action="{{ route('register') }}">

####変更後

register.blade.php
<form method="POST" action="{{ route('admin.register') }}">

この他のログイン画面についてもbladeファイルの中でルーティングのNameが使用されているためすべてadmin.xxxxxに変更してください。

今回はここで終了です。
次回に続きます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?