質問編集履歴
2
テキスト修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,19 +1,16 @@
|
|
1
1
|
Laravel9 Breezeを用いて、デフォルトのUserテーブルに加えて、Adminテーブルでのマルチログイン機能を実装しました。
|
2
2
|
|
3
|
-
Adminでのログイン
|
3
|
+
Adminアカウントでの登録、ログインは動作しています。
|
4
4
|
|
5
|
-
しかし、Adminユーザーでのパスワードリセットを行うと、ブラウザで
|
6
|
-
|
7
|
-
Error
|
8
|
-
|
5
|
+
しかし、Adminユーザーでのパスワードリセット(localhost/admin/reset-password/)を行うと、
|
9
|
-
|
6
|
+
「このメールアドレスに一致するユーザーがいません。」
|
10
7
|
となります。
|
11
8
|
|
12
9
|
|
13
10
|
|
14
|
-
以下の手順で、Adminユーザーでのパスワードリセットを実装しました。
|
15
11
|
|
16
12
|
|
13
|
+
以下の手順で、Adminユーザーでのパスワードリセットを実装しました。
|
17
14
|
|
18
15
|
1.Admin登録mailアドレスにリセットメールが送信されるように、PasswordResetLinkController.phpファイルのPasswordファサードの後にbrokerメソッドを追加
|
19
16
|
```PHP
|
@@ -30,9 +27,14 @@
|
|
30
27
|
// to send the link, we will examine the response then see the message we
|
31
28
|
// need to show to the user. Finally, we'll send out a proper response.
|
32
29
|
|
30
|
+
$status = Password::sendResetLink(
|
31
|
+
$request->only('email')
|
32
|
+
);
|
33
|
+
//以下のコードを追加
|
33
34
|
$status = Password::broker('admins')->sendResetLink(
|
34
35
|
$request->only('email')
|
35
36
|
);
|
37
|
+
//追加ここまで
|
36
38
|
|
37
39
|
return Password::RESET_LINK_SENT == $status
|
38
40
|
? back()->with('status', __($status))
|
@@ -43,12 +45,17 @@
|
|
43
45
|
上記でadminアカウントのリセットメールが受信されるようになりました。
|
44
46
|
|
45
47
|
|
46
|
-
2.vender/laravel/framework/src/illminate/Notifications/「ResetPassword.php」
|
48
|
+
2.vender/laravel/framework/src/illminate/Notifications/「ResetPassword.php」の内容をコピーして、新たにAdminResetPassword.phpファイルをResetPassword.phpと同じ階層に作成
|
47
49
|
|
48
50
|
ResetPassword.phpファイルをコピーしたAdminResetPassword.phpで、以下の箇所を変更しました。
|
49
51
|
```PHP
|
50
52
|
AdminResetPassword.php
|
51
53
|
|
54
|
+
// class ResetPassword extends Notification
|
55
|
+
class AdminResetPassword extends Notification
|
56
|
+
|
57
|
+
|
58
|
+
//function buildMailMessage($url)、 function resetUrl($notifiable)を編集
|
52
59
|
|
53
60
|
protected function buildMailMessage($url)
|
54
61
|
{
|
@@ -59,6 +66,7 @@
|
|
59
66
|
->line(Lang::get('This password reset link will expire in :count minutes.', ['count' => config('auth.passwords.admins'.config('auth.defaults.passwords').'.expire')]))
|
60
67
|
->line(Lang::get('If you did not request a password reset, no further action is required.'));
|
61
68
|
}
|
69
|
+
|
62
70
|
|
63
71
|
protected function resetUrl($notifiable)
|
64
72
|
{
|
@@ -100,18 +108,18 @@
|
|
100
108
|
|
101
109
|
```
|
102
110
|
|
103
|
-
しかし、パスワードリセットメッセージのボタンにアクセスすると、冒頭のエラー
|
104
|
-
|
111
|
+
パスワードリセット(http://localhost/admin/forgot-password)からパスワード再設定用のURLをメールに送信すると、「Admin Reset Password Notification」というタイトルでパスワードリセットのリンク付きメッセージが受信されます。
|
105
112
|
|
106
|
-
と
|
113
|
+
Admin Reset Password Notificationメール本文の「パスワード再設定」ボタンをクリックすると、localhost/admin/reset-password/へ遷移します。
|
107
114
|
|
108
|
-
|
115
|
+
localhost/admin/reset-password/でパスワードを再設定すると、「このメールアドレスに一致するユーザーがいません。」となり、adminユーザのパスワード再設定が完了しません。
|
116
|
+
|
109
117
|
|
110
118
|
パスワードリセットに関しては以下の記事を参照しました。
|
111
119
|
https://reffect.co.jp/laravel/breeze_multi_auth#i-19
|
112
120
|
※記事はLaravel8で説明しています。
|
113
121
|
|
114
|
-
|
122
|
+
パスワード再設定の際にlaravelがadminテーブルを参照出来ていないのが原因だと思うのですが、どこを修正すればいいのか分かりません。
|
115
123
|
|
116
124
|
|
117
125
|
|
1
記事修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,14 +2,20 @@
|
|
2
2
|
|
3
3
|
Adminでのログイン、登録は動作しています。
|
4
4
|
|
5
|
-
しかし、Adminユーザーでのパスワードリセットを行うと、
|
5
|
+
しかし、Adminユーザーでのパスワードリセットを行うと、ブラウザで
|
6
|
+
|
7
|
+
Error
|
6
|
-
|
8
|
+
Class "Illuminate\Auth\Notifications\AdminResetPassword" not found
|
9
|
+
|
10
|
+
となります。
|
11
|
+
|
12
|
+
|
7
13
|
|
8
14
|
以下の手順で、Adminユーザーでのパスワードリセットを実装しました。
|
9
15
|
|
10
16
|
|
11
17
|
|
12
|
-
1.Admi
|
18
|
+
1.Admin登録mailアドレスにリセットメールが送信されるように、PasswordResetLinkController.phpファイルのPasswordファサードの後にbrokerメソッドを追加
|
13
19
|
```PHP
|
14
20
|
PasswordResetLinkController.php
|
15
21
|
|
@@ -34,11 +40,12 @@
|
|
34
40
|
->withErrors(['email' => __($status)]);
|
35
41
|
}
|
36
42
|
```
|
37
|
-
リセットメール
|
43
|
+
上記でadminアカウントのリセットメールが受信されるようになりました。
|
38
44
|
|
39
|
-
2.ResetPassword.phpファイルをコピーして新たにAdminResetPassword.phpファイルをvender/laravel/framework/src/illminate/Notificationsに作成
|
40
45
|
|
46
|
+
2.vender/laravel/framework/src/illminate/Notifications/「ResetPassword.php」ファイルをコピーして、新たにAdminResetPassword.phpファイルをvender/laravel/framework/src/illminate/Notifications/に作成
|
47
|
+
|
41
|
-
ResetPassword.phpファイルをコピーしたAdminResetPassword.php
|
48
|
+
ResetPassword.phpファイルをコピーしたAdminResetPassword.phpで、以下の箇所を変更しました。
|
42
49
|
```PHP
|
43
50
|
AdminResetPassword.php
|
44
51
|
|
@@ -66,7 +73,7 @@
|
|
66
73
|
}
|
67
74
|
```
|
68
75
|
|
69
|
-
3.app
|
76
|
+
3.app/Moldes/Admin.phpファイルにsendPasswordResetNotificationメソッドを追加
|
70
77
|
|
71
78
|
```PHP
|
72
79
|
Admin.php
|
@@ -78,6 +85,8 @@
|
|
78
85
|
use Illuminate\Foundation\Auth\User as Authenticatable;
|
79
86
|
use Illuminate\Notifications\Notifiable;
|
80
87
|
use Laravel\Sanctum\HasApiTokens;
|
88
|
+
use Illuminate\Auth\Notifications\AdminResetPassword as ResetPasswordNotification;
|
89
|
+
|
81
90
|
class Admin extends Authenticatable implements MustVerifyEmail
|
82
91
|
{
|
83
92
|
use HasApiTokens;
|
@@ -91,11 +100,19 @@
|
|
91
100
|
|
92
101
|
```
|
93
102
|
|
94
|
-
しかし、
|
95
|
-
|
103
|
+
しかし、パスワードリセットメッセージのボタンにアクセスすると、冒頭のエラー
|
96
|
-
l
|
104
|
+
Class "Illuminate\Auth\Notifications\AdminResetPassword" not found
|
97
105
|
|
106
|
+
となります。。。。
|
107
|
+
|
98
|
-
|
108
|
+
しかし、AdminResetPassword.PHPは添付画像のようにIlluminate\Auth\Notifications\AdminResetPasswordにあります。
|
109
|
+
|
110
|
+
パスワードリセットに関しては以下の記事を参照しました。
|
111
|
+
https://reffect.co.jp/laravel/breeze_multi_auth#i-19
|
112
|
+
※記事はLaravel8で説明しています。
|
113
|
+
|
114
|
+
記事を何度も見直し、記事と相違のある箇所は無いように思うのですが、Laravelの知識がまだまだなのでどこを修正していいのかわかりません。。。。
|
99
115
|
|
100
116
|
|
101
117
|
|
118
|
+
|