質問編集履歴

1

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

2021/07/01 09:56

投稿

ra-men_love
ra-men_love

スコア6

test CHANGED
File without changes
test CHANGED
@@ -243,3 +243,123 @@
243
243
  ## 5. 使用言語・ライブラリのバージョン
244
244
 
245
245
  Laravel Framework 6.20.27
246
+
247
+
248
+
249
+
250
+
251
+ ### 変更点
252
+
253
+ 上記の内容を踏まえて、Userモデル内でAuthを使ったことでエラーが出ている可能性があったため、
254
+
255
+ 下記のように、モデル内ではなくcontrollerの中でAuthを使うように変更しました。
256
+
257
+
258
+
259
+ web.php
260
+
261
+ ```
262
+
263
+ Route::get('/board/email', 'SettingController@prechange')->name('prechange');
264
+
265
+ Route::post('/board/email/change', 'SettingController@createEmailToken')->name('email_token');
266
+
267
+ Route::view('/board/mail-sent', 'change_mail-sent')->name('change_mail_sent');
268
+
269
+ Route::get('/board/verify/{token}', 'SettingController@verifyEmail');
270
+
271
+ Route::post('/board/email','SettingController@email_store')->name('email_store');
272
+
273
+ ```
274
+
275
+ SettingController.php
276
+
277
+ ```
278
+
279
+ public function prechange(){
280
+
281
+ $user = User::where('id',Auth::get())->first();
282
+
283
+ $user_name = $user->name;
284
+
285
+
286
+
287
+ return view('prechange',['user_name'=>$user_name]);
288
+
289
+ }
290
+
291
+
292
+
293
+ public function createEmailToken(Request $request){
294
+
295
+ //Validation部分
296
+
297
+ $rule = [
298
+
299
+ 'email' => 'required|max:500',
300
+
301
+ ];
302
+
303
+
304
+
305
+ $messages = [
306
+
307
+ 'email.required' => 'メールアドレスは必ず入力してください。',
308
+
309
+ 'email.max' => 'メールアドレスは500文字以内で入力してください。'
310
+
311
+ ];
312
+
313
+
314
+
315
+ $validator = Validator::make($request->all(), $rule, $messages);
316
+
317
+
318
+
319
+ if ($validator->fails()) {
320
+
321
+ return redirect()->route('prechange')
322
+
323
+ ->withErrors($validator)
324
+
325
+ ->withInput();
326
+
327
+ }
328
+
329
+
330
+
331
+ $request->session()->put('email', $request->input('email'));
332
+
333
+ User::prechange($request->get('uer_name'));
334
+
335
+
336
+
337
+ return redirect()->route('change_mail_sent');
338
+
339
+ }
340
+
341
+ ```
342
+
343
+ User.php
344
+
345
+ ```
346
+
347
+ public function prechange($user_name){
348
+
349
+ $user = User::where('name',$user_name)->first();
350
+
351
+ $user->email_verify_token = Str::random(40);
352
+
353
+ $user->save();
354
+
355
+ }
356
+
357
+ ```
358
+
359
+ 上記で実行した場合、
360
+
361
+ prechangeメソッドで引っかかっているようでした。
362
+
363
+ 同controller内の他メソッドではAuthを使えているのですが、なぜか、このメソッドだけエラーを返してしまします。
364
+
365
+ エラー内容は前回と同様です。