質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

解決済

1回答

1659閲覧

画像Laravel7系でパスワードリセット機能のリセット用メール送信後の画面を指定したい

ma-kun92

総合スコア34

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2020/09/21 13:45

編集2020/09/21 14:08

前提・実現したいこと

Laravel7系を利用してパスワードリセット機能を実装しています。
認証はLaravelがデフォルトで用意しているAuthの機能を使用しています。

実現させたいこととして、
パスワードリセット用のメールを送信した後に指定したテンプレート(サンクスページ)を表示させたのですが、どのファイルのどの記述を変更すれば良いかわかりません。

6系までは__framework/src/Illuminate/Foundation/Auth/SendsPasswordResetEmails.php__
にテンプレートを指定する記述があったようなのですが、7系にはそのファイルがなくなっているようです。
知見がある方がいらっしゃいましたら、ご教授お願いします。

現在の表示されてしまうページ

補足情報(FW/ツールのバージョンなど)

Laravel Framework 7.12.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

イメージ説明

Form の送信先が /password/email であることがわかる

php artisan route:list | grep password/email でコントローラーを特定する

イメージ説明

App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail だとわかる

php

1<?php 2 3namespace App\Http\Controllers\Auth; 4 5use App\Http\Controllers\Controller; 6use Illuminate\Foundation\Auth\SendsPasswordResetEmails; 7 8class ForgotPasswordController extends Controller 9{ 10 /* 11 |-------------------------------------------------------------------------- 12 | Password Reset Controller 13 |-------------------------------------------------------------------------- 14 | 15 | This controller is responsible for handling password reset emails and 16 | includes a trait which assists in sending these notifications from 17 | your application to your users. Feel free to explore this trait. 18 | 19 */ 20 21 use SendsPasswordResetEmails; 22}

SendsPasswordResetEmails にメソッドがありそう

php

1<?php 2 3namespace Illuminate\Foundation\Auth; 4 5use Illuminate\Http\JsonResponse; 6use Illuminate\Http\Request; 7use Illuminate\Support\Facades\Password; 8use Illuminate\Validation\ValidationException; 9 10trait SendsPasswordResetEmails 11{ 12 /** 13 * Display the form to request a password reset link. 14 * 15 * @return \Illuminate\View\View 16 */ 17 public function showLinkRequestForm() 18 { 19 return view('auth.passwords.email'); 20 } 21 22 /** 23 * Send a reset link to the given user. 24 * 25 * @param \Illuminate\Http\Request $request 26 * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse 27 */ 28 public function sendResetLinkEmail(Request $request) 29 { 30 $this->validateEmail($request); 31 32 // We will send the password reset link to this user. Once we have attempted 33 // to send the link, we will examine the response then see the message we 34 // need to show to the user. Finally, we'll send out a proper response. 35 $response = $this->broker()->sendResetLink( 36 $this->credentials($request) 37 ); 38 39 return $response == Password::RESET_LINK_SENT 40 ? $this->sendResetLinkResponse($request, $response) 41 : $this->sendResetLinkFailedResponse($request, $response); 42 } 43 44 (省略) 45}

この部分にレスポンスを返している部分が見つかる

php

1 return $response == Password::RESET_LINK_SENT 2 ? $this->sendResetLinkResponse($request, $response) 3 : $this->sendResetLinkFailedResponse($request, $response);

投稿2020/09/21 13:51

編集2020/09/22 01:50
phper.k

総合スコア3923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ma-kun92

2020/09/21 14:13 編集

phper.k様 こちらは > 多くのWebアプリケーションはアプリケーション利用開始前に、ユーザーのメールアドレスを確認する必要があります。アプリケーションごとに再実装しなくても済むように、Laravelはメールを送信し、メールの確認リクエストを検証する便利なメソッドを用意しています。 とあるように、パスワードリセット用のメール送信後のリダイレクト先を指定できるものではないと思います。実際に認証の必要のないページ(Laravelの最初のWelcomeページ)にリダイレクトするように設定し、処理を行ったところ、これまでと同じページに戻ってきてしまいました。 今回の処理で使用されるアクションは ``` | | POST | password/email | password.email | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail | web | ``` この部分になるかと思うのですが、間違っていますでしょうか。
phper.k

2020/09/21 14:09

回答を修正しました
ma-kun92

2020/09/21 15:11

public function redirectTo() redirect() に return '/'; を記述しても指定したテンプレートを表示させることができす、添付した画面になってしまいました。
phper.k

2020/09/22 02:10 編集

質問を読み違ってました
phper.k

2020/09/22 01:27 編集

SendsPasswordResetEmails::sendResetLinkEmail() にその処理があります。
phper.k

2020/09/22 01:50

回答を書き直しました
ma-kun92

2020/09/22 03:28

phper.k様 度重なる回答をありがとうございます。 Laraevel6系のvendorフォルダ内のframework/src/Illuminate/Foundation/Auth/SendsPasswordResetEmails.php に記載されてあったsendResetLinkResponse()を持ってきて、オーバーライドすると意図したテンプレートを表示させることができるようになりました。 Laravel7系ではそのファイルがなくなってしまい関数自体も見当たらないので、処理が変わってしまっているか不安が残ります。
phper.k

2020/09/22 03:38 編集

それはあかんでしょ。たぶん。 とはいえ、MITライセンスの物は自由に改変できるんだし、それによって不具合が起ころうと自己責任なので、本人がよければ、いいんじゃない?というのも正解です。 私自身であれば、そんなアプローチはしないと思う。
ma-kun92

2020/09/22 04:18

phper.k様と同じで、自分としてもよくわからない処理をとりたくないと考えています。 app/Http/Controllers/Auth/ForgotPasswordController.php 内の記述に use Illuminate\Foundation\Auth\SendsPasswordResetEmails; と書いてあるのにLaravel7系ではそのファイルんが無いのがずっと引っかかるのですが、 phper.k様が回答で載せてあるファイルはLaravel6系のものでしょうか?
ma-kun92

2020/09/22 04:48

連続してすみません。 ui/auth-backend/SendsPasswordResetEmails.php 上記ファイル内に SendsPasswordResetEmails()が存在し、処理に使用されておりました。 完全にuiフォルダを見落としており、ずっとframewordフォルダ内を調査しておりました。 申し訳ありませんでした。
ma-kun92

2020/09/22 04:49

phper.k様 色々と意見をいただきありがとうございました。
phper.k

2020/09/22 04:54

IDE使って開発していないのですか?
ma-kun92

2020/09/22 05:03

docker+VScode開発をしています。
ma-kun92

2020/09/22 06:10

ありがとうございます。参照できました。 これから使っていきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問