teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

投稿時点から変更した点を記載

2021/07/01 09:56

投稿

ra-men_love
ra-men_love

スコア6

title CHANGED
File without changes
body CHANGED
@@ -120,4 +120,64 @@
120
120
 
121
121
  ご教授お願いします。
122
122
  ## 5. 使用言語・ライブラリのバージョン
123
- Laravel Framework 6.20.27
123
+ Laravel Framework 6.20.27
124
+
125
+
126
+ ### 変更点
127
+ 上記の内容を踏まえて、Userモデル内でAuthを使ったことでエラーが出ている可能性があったため、
128
+ 下記のように、モデル内ではなくcontrollerの中でAuthを使うように変更しました。
129
+
130
+ web.php
131
+ ```
132
+ Route::get('/board/email', 'SettingController@prechange')->name('prechange');
133
+ Route::post('/board/email/change', 'SettingController@createEmailToken')->name('email_token');
134
+ Route::view('/board/mail-sent', 'change_mail-sent')->name('change_mail_sent');
135
+ Route::get('/board/verify/{token}', 'SettingController@verifyEmail');
136
+ Route::post('/board/email','SettingController@email_store')->name('email_store');
137
+ ```
138
+ SettingController.php
139
+ ```
140
+ public function prechange(){
141
+ $user = User::where('id',Auth::get())->first();
142
+ $user_name = $user->name;
143
+
144
+ return view('prechange',['user_name'=>$user_name]);
145
+ }
146
+
147
+ public function createEmailToken(Request $request){
148
+ //Validation部分
149
+ $rule = [
150
+ 'email' => 'required|max:500',
151
+ ];
152
+
153
+ $messages = [
154
+ 'email.required' => 'メールアドレスは必ず入力してください。',
155
+ 'email.max' => 'メールアドレスは500文字以内で入力してください。'
156
+ ];
157
+
158
+ $validator = Validator::make($request->all(), $rule, $messages);
159
+
160
+ if ($validator->fails()) {
161
+ return redirect()->route('prechange')
162
+ ->withErrors($validator)
163
+ ->withInput();
164
+ }
165
+
166
+ $request->session()->put('email', $request->input('email'));
167
+ User::prechange($request->get('uer_name'));
168
+
169
+ return redirect()->route('change_mail_sent');
170
+ }
171
+ ```
172
+ User.php
173
+ ```
174
+ public function prechange($user_name){
175
+ $user = User::where('name',$user_name)->first();
176
+ $user->email_verify_token = Str::random(40);
177
+ $user->save();
178
+ }
179
+ ```
180
+ 上記で実行した場合、
181
+ prechangeメソッドで引っかかっているようでした。
182
+ 同controller内の他メソッドではAuthを使えているのですが、なぜか、このメソッドだけエラーを返してしまします。
183
+ エラー内容は前回と同様です。