このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
プログラム言語:php:laravel:認証:laravel7でマルチ認証 [2021/03/03 11:00] humolife [その他書き換え] |
プログラム言語:php:laravel:認証:laravel7でマルチ認証 [2021/12/16 18:27] (現在) humolife [パッケージのインストール] |
||
|---|---|---|---|
| 行 8: | 行 8: | ||
| php artisan ui vue --auth | php artisan ui vue --auth | ||
| + | # vue.js を使わない場合は、以下の手順は不要 | ||
| # NodeJS がない場合はインストール | # NodeJS がない場合はインストール | ||
| curl -sL https:// | curl -sL https:// | ||
| 行 34: | 行 35: | ||
| # マイグレーションの実行 | # マイグレーションの実行 | ||
| php artisan migrate | php artisan migrate | ||
| + | </ | ||
| + | |||
| + | ===== モデル ===== | ||
| + | app 直下にある User.php を app\Models の中に 移動。 | ||
| + | < | ||
| + | // ディレクトリを移動したので、namespace を書き換え | ||
| + | namespace App; | ||
| + | ↓ | ||
| + | namespace App\Models; | ||
| + | </ | ||
| + | < | ||
| + | // app\Models\User.php の内容をコピペし、クラス名を書き換える | ||
| + | class User extends Authenticatable | ||
| + | ↓ | ||
| + | class Admin extends Authenticatable | ||
| + | </ | ||
| + | モデルファイルのパスが変わったので、関係するファイルも書き換え。 | ||
| + | < | ||
| + | use App\User; | ||
| + | ↓ | ||
| + | use App\Models\User; | ||
| + | </ | ||
| + | < | ||
| + | ' | ||
| + | ↓ | ||
| + | ' | ||
| </ | </ | ||
| 行 44: | 行 71: | ||
| </ | </ | ||
| < | < | ||
| + | // 追加 | ||
| + | use App\Models\User; | ||
| + | |||
| public function run() | public function run() | ||
| { | { | ||
| - | // 追加 | + | // 本番環境以外でのみアカウントを追加 |
| - | | + | |
| - | | + | $user = User::where('email', |
| - | ' | + | |
| - | ' | + | $user = new User(); |
| - | ' | + | $user->name = ' |
| - | | + | |
| + | | ||
| + | | ||
| + | } | ||
| + | | ||
| } | } | ||
| </ | </ | ||
| < | < | ||
| + | // 追加 | ||
| + | use App\Models\Admin; | ||
| + | |||
| public function run() | public function run() | ||
| { | { | ||
| - | // 追加 | + | // 本番環境以外でのみアカウントを追加 |
| - | | + | |
| - | | + | $admin = Admin::where('email', |
| - | ' | + | |
| - | ' | + | $admin |
| - | ' | + | $admin->name = ' |
| - | | + | |
| + | | ||
| + | | ||
| + | } | ||
| + | | ||
| } | } | ||
| </ | </ | ||
| 行 85: | 行 126: | ||
| </ | </ | ||
| - | ===== モデル ===== | ||
| - | app 直下にある User.php を app\Models の中に 移動。 | ||
| - | < | ||
| - | // ディレクトリを移動したので、namespace を書き換え | ||
| - | namespace App; | ||
| - | ↓ | ||
| - | namespace App\Models; | ||
| - | </ | ||
| - | < | ||
| - | // app\Models\User.php の内容をコピペし、クラス名を書き換える | ||
| - | class User extends Authenticatable | ||
| - | ↓ | ||
| - | class Admin extends Authenticatable | ||
| - | </ | ||
| - | モデルファイルのパスが変わったので、関係するファイルも書き換え。 | ||
| - | < | ||
| - | use App\User; | ||
| - | ↓ | ||
| - | use App\Models\User; | ||
| - | </ | ||
| - | < | ||
| - | ' | ||
| - | ↓ | ||
| - | ' | ||
| - | </ | ||
| ===== コンフィグ ===== | ===== コンフィグ ===== | ||
| 認証の設定ファイルをマルチ認証対応に書き換える。 | 認証の設定ファイルをマルチ認証対応に書き換える。 | ||
| 行 232: | 行 248: | ||
| * user → admin | * user → admin | ||
| ※ AuthenticatesUsers を AuthenticatesAdmins に置換しないように注意 | ※ AuthenticatesUsers を AuthenticatesAdmins に置換しないように注意 | ||
| + | |||
| + | ==== ログイン後のリダイレクト先を Admin 用に書き換える ==== | ||
| + | < | ||
| + | protected $redirectTo = RouteServiceProvider:: | ||
| + | </ | ||
| ===== ルーティング ===== | ===== ルーティング ===== | ||
| < | < | ||
| 行 292: | 行 313: | ||
| return redirect(RouteServiceProvider:: | return redirect(RouteServiceProvider:: | ||
| } | } | ||
| - | |||
| return $next($request); | return $next($request); | ||
| } | } | ||
| </ | </ | ||
| + | < | ||
| + | // 追加 | ||
| + | use Illuminate\Session\TokenMismatchException; | ||
| + | |||
| + | public function render($request, | ||
| + | { | ||
| + | // 追加 | ||
| + | // 419 csrf トークン切れで戻る | ||
| + | if ($exception instanceof TokenMismatchException) { | ||
| + | return back()-> | ||
| + | } | ||
| + | |||
| + | return parent:: | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== ビュー ===== | ||
| + | views\layouts にある app.blade.php を app_user.blade.php などにリネーム。 | ||
| + | < | ||
| + | // リンク先などを必要に応じて変更 | ||
| + | route(' | ||
| + | ↓ | ||
| + | route(' | ||
| + | |||
| + | route(' | ||
| + | ↓ | ||
| + | route(' | ||
| + | </ | ||
| + | app_user.blade.php をコピーして app_admin.blade.php を作成。\\ | ||
| + | リンク先を route(' | ||
| + | |||
| + | resources\views 直下に user ディレクトリ作成し、auth ディレクトリと home.blade.php を移動。\\ | ||
| + | home.blade.php で extends しているファイルを変更。 | ||
| + | < | ||
| + | // 書き換え | ||
| + | @extends(' | ||
| + | </ | ||
| + | auth ディレクトリ内にある login.blade.php 以外を削除する。 | ||
| + | < | ||
| + | // 書き換え | ||
| + | @extends(' | ||
| + | |||
| + | // リンク先を変更 | ||
| + | route(' | ||
| + | ↓ | ||
| + | route(' | ||
| + | </ | ||
| + | resources\views\user をコピーして admin ディレクトリを作成。\\ | ||
| + | admin ディレクトリ内の各ファイルについて、以下の置換を行う。 | ||
| + | * user → admin | ||
| + | |||
| + | 一通り作業が完了したので、user、admin それぞれの URL にアクセスしてログイン画面が表示されることを確認。\\ | ||
| + | https:// | ||
| + | https:// | ||