実現したいこと
現在作成中のアプリで、ユーザーログイン・登録をFortifyの認証機能を利用しています。
それにプラスして、管理者と店舗代表者の登録・ログインもFortifyを利用して作成したいと考えています。
発生している問題・分からないこと
Fortify関連のファイルのコードを変更もしくは追加かなとは思っていたのですが、どのようにコードを追加変更したらいいのかがわかりません。
例えば、FortifyServiceProvider(以下参照)のboot部分が一番の肝かなと思いますが、ここにコードを追加できるのかが不安で、、、、
あと、管理者認証ログイン時にルートを /adminでしてログイン画面を /admin/loginでしたいけど、この辺もミドルウェアauthですると /loginに自動でなってしまいます。
これは、ミドルウェアauthを変更すべきか、それと同じミドルウェアを作成してルートを /admin/loginにできるようにすべきか悩んでいます。
該当のソースコード
FortifyServiceProvider
1<?php 2 3namespace App\Providers; 4 5use App\Actions\Fortify\CreateNewUser; 6// use App\Actions\Fortify\ResetUserPassword; 7// use App\Actions\Fortify\UpdateUserPassword; 8// use App\Actions\Fortify\UpdateUserProfileInformation; 9use Illuminate\Cache\RateLimiting\Limit; 10use Illuminate\Http\Request; 11use Illuminate\Support\Facades\RateLimiter; 12use Illuminate\Support\ServiceProvider; 13// use Illuminate\Support\Str; 14use Laravel\Fortify\Fortify; 15 16class FortifyServiceProvider extends ServiceProvider 17{ 18 /** 19 * Register any application services. 20 */ 21 public function register(): void 22 { 23 // 24 } 25 26 /** 27 * Bootstrap any application services. 28 */ 29 public function boot() 30 { 31 Fortify::createUsersUsing(CreateNewUser::class); 32 33 Fortify::registerView(function() { 34 return view('auth.register'); 35 }); 36 37 38 39 Fortify::loginView(function(){ 40 return view('auth.login'); 41 }); 42 43 44 RateLimiter::for('login', function (Request $request) { 45 $email = (string) $request->email; 46 return Limit::perMinute(10)->by($email . $request->ip()); 47 }); 48 49 } 50} 51
web.php(管理者ルート)
1Route::middleware('auth')->group(function(){ 2 Route::get('/admin',[AdminController::class,'admin']); 3}); 4
AdminController.php
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6 7 8 9class AdminController extends Controller 10{ 11 12 public function admin() 13 { 14 return view('admin'); 15 } 16 17} 18 19
Authenticate.php
1<?php 2 3namespace App\Http\Middleware; 4 5use Illuminate\Auth\Middleware\Authenticate as Middleware; 6 7class Authenticate extends Middleware 8{ 9 /** 10 * Get the path the user should be redirected to when they are not authenticated. 11 * 12 * @param \Illuminate\Http\Request $request 13 */ 14 protected function redirectTo($request) 15 { 16 if (!$request->expectsJson()) { 17 return route('login'); 18 } 19 } 20} 21
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
googleで「fortify マルチ認証」で検索かけたけど、一致する結果が見つかりませんでした。
breezeでなら見つかるのですが笑
補足
特になし
あなたの回答
tips
プレビュー