Readouble

Laravel master パスワードリセット

イントロダクションIntroduction

lightbulb">Tip!! さっそく取り掛かりたいですか? 真新しいLaravelアプリケーションでphp artisan make:authを実行し、ブラウザでhttp://your-app.dev/registerか、アプリケーションで割りつけた別のURLへアクセスするだけです。この一つのコマンドで、パスワードリセットを含めた、認証システム全体のスカフォールディングの面倒をみます。{tip} Want to get started fast? Just run php artisan make:auth in a fresh Laravel application and navigate your browser to http://your-app.dev/register or any other URL that is assigned to your application. This single command will take care of scaffolding your entire authentication system, including resetting passwords!

大抵のWebアプリケーションはパスワードをリセットする手段を提供しています。それぞれのアプリケーションで何度も実装する代わりに、Laravelはパスワードリマインダを送り、パスワードリセットを実行する便利な方法を提供しています。Most web applications provide a way for users to reset their forgotten passwords. Rather than forcing you to re-implement this on each application, Laravel provides convenient methods for sending password reminders and performing password resets.

Note: note Laravelのパスワードリセット機能を使用開始する前に、ユーザがIlluminate\Notifications\Notifiableトレイトを使用していることを確認してください。{note} Before using the password reset features of Laravel, your user must use the Illuminate\Notifications\Notifiable trait.

データベースの検討事項Database Considerations

利用開始するには、App\UserモデルがIlluminate\Contracts\Auth\CanResetPassword契約を実装しているか確認してください。もちろん、フレームワークに用意されているApp\Userモデルでは、既にこのインターフェイスが実装されています。Illuminate\Auth\Passwords\CanResetPasswordトレイトで、このインターフェイスで実装する必要のあるメソッドが定義されています。To get started, verify that your App\User model implements the Illuminate\Contracts\Auth\CanResetPassword contract. Of course, the App\User model included with the framework already implements this interface, and uses the Illuminate\Auth\Passwords\CanResetPassword trait to include the methods needed to implement the interface.

リセットトークンテーブルマイグレーションの生成Generating The Reset Token Table Migration

次にパスワードリセットトークンを保存しておくためのテーブルを作成します。このテーブルのマイグレーションは、最初からLaravelのdatabase/migrationsディレクトリに含まれています。ですから、データベースマイグレートするために必要なのは次のコマンド実行だけです。Next, a table must be created to store the password reset tokens. The migration for this table is included with Laravel out of the box, and resides in the database/migrations directory. So, all you need to do is run your database migrations:

php artisan migrate

ルート定義Routing

Laravelはパスワードリセットリンクのメールを送信し、ユーザのパスワードをリセットするために必要なロジックを全部含んでいる、Auth\ForgotPasswordControllerAuth\PasswordControllerを用意しています。パスワードリセットに必要な全ルートは、make:auth Artisanコマンドで生成します。Laravel includes Auth\ForgotPasswordController and Auth\ResetPasswordController classes that contains the logic necessary to e-mail password reset links and reset user passwords. All of the routes needed to perform password resets may be generated using the make:auth Artisan command:

php artisan make:auth

ビューViews

ビューについても、make:authコマンドを実行すれば、パスワードリセットに必要な全てが生成されます。ビューはresources/views/auth/passwordsに生成されます。アプリケーションに合わせ、自由にカスタマイズしてください。Again, Laravel will generate all of the necessary views for password reset when the make:auth command is executed. These views are placed in resources/views/auth/passwords. You are free to customize them as needed for your application.

パスワードリセット後の処理After Resetting Passwords

ユーザのパスワードをリセットするルートとビューを定義できたら、ブラウザーで/password/resetのルートへアクセスするだけです。フレームワークに含まれている ForgotPasswordControllerは、パスワードリセットリンクを含むメールを送信するロジックを含んでいます。一方のResetPasswordControllerはユーザパスワードのリセットロジックを含んでいます。。Once you have defined the routes and views to reset your user's passwords, you may simply access the route in your browser at /password/reset. The ForgotPasswordController included with the framework already includes the logic to send the password reset link e-mails, while the ResetPasswordController includes the logic to reset user passwords.

パスワードがリセットされたら、そのユーザは自動的にアプリケーションにログインされ、/homeへリダイレクトされます。パスワードリセット後のリダイレクト先をカスタマイズするには、ResetPasswordControllerredirectToプロパティを定義してください。After a password is reset, the user will automatically be logged into the application and redirected to /home. You can customize the post password reset redirect location by defining a redirectTo property on the ResetPasswordController:

protected $redirectTo = '/dashboard';

Note: note デフォルトでパスワードリセットトークンは、一時間有効です。これは、config/auth.phpファイルのexpireオプションにより変更できます。{note} By default, password reset tokens expire after one hour. You may change this via the password reset expire option in your config/auth.php file.

カスタマイズCustomization

認証ガードのカスタマイズAuthentication Guard Customization

auth.php設定ファイルにより、複数のユーザテーブルごとに認証の振る舞いを定義するために使用する、「ガード」をそれぞれ設定できます。用意されているResetPasswordControllerコントローラのguardメソッドをオーバーライドすることにより、選択したガードを使用するようにカスタマイズできます。このメソッドは、ガードインスタンスを返す必要があります。In your auth.php configuration file, you may configure multiple "guards", which may be used to define authentication behavior for multiple user tables. You can customize the included ResetPasswordController to use the guard of your choice by overriding the guard method on the controller. This method should return a guard instance:

use Illuminate\Support\Facades\Auth;

protected function guard()
{
    return Auth::guard('guard-name');
}

パスワードブローカーのカスタマイズPassword Broker Customization

複数のユーザテーブルに対するパスワードをリセットするために使用する、別々のパスワード「ブローカー」をauth.phpファイルで設定できます。用意されているForgotPasswordControllerResetPasswordControllerbrokerメソッドをオーバーライドし、選んだブローカーを使用するようにカスタマイズができます。In your auth.php configuration file, you may configure multiple password "brokers", which may be used to reset passwords on multiple user tables. You can customize the included ForgotPasswordController and ResetPasswordController to use the broker of your choice by overriding the broker method:

use Illuminate\Support\Facades\Password;

/**
 *パスワードリセットに使われるブローカの取得
 *
 * @return PasswordBroker
 */
protected function broker()
{
    return Password::broker('name');
}

リセットメールのカスタマイズReset Email Customization

パスワードリセットリンクをユーザへ送るために使用する、通知クラスは簡単に変更できます。手始めに、UserモデルのsendPasswordResetNotificationメソッドをオーバーライドしましょう。このメソッドの中で、皆さんが選んだ通知クラスを使用し、通知を送信できます。パスワードリセット$tokenは、メソッドの第1引数として受け取ります。You may easily modify the notification class used to send the password reset link to the user. To get started, override the sendPasswordResetNotification method on your User model. Within this method, you may send the notification using any notification class you choose. The password reset $token is the first argument received by the method:

/**
 * パスワードリセット通知の送信
 *
 * @param  string  $token
 * @return void
 */
public function sendPasswordResetNotification($token)
{
    $this->notify(new ResetPasswordNotification($token));
}

章選択

開発環境
ビューとテンプレート
公式パッケージ

設定

明暗テーマ
light_mode
dark_mode
brightness_auto システム設定に合わせる
テーマ選択
photo_size_select_actual デフォルト
photo_size_select_actual モノクローム(白黒)
photo_size_select_actual Solarized風
photo_size_select_actual GitHub風(青ベース)
photo_size_select_actual Viva(黄緑ベース)
photo_size_select_actual Happy(紫ベース)
photo_size_select_actual Mint(緑ベース)
コードハイライトテーマ選択

明暗テーマごとに、コードハイライトのテーマを指定できます。

テーマ配色確認
スクリーン表示幅
640px
80%
90%
100%

768px以上の幅があるときのドキュメント部分表示幅です。

インデント
無し
1rem
2rem
3rem
原文確認
原文を全行表示
原文を一行ずつ表示
使用しない

※ 段落末のEボタンへカーソルオンで原文をPopupします。

Diff表示形式
色分けのみで区別
行頭の±で区別
削除線と追記で区別

※ [tl!…]形式の挿入削除行の表示形式です。

テストコード表示
両コード表示
Pestのみ表示
PHPUnitのみ表示
OS表示
全OS表示
macOSのみ表示
windowsのみ表示
linuxのみ表示
和文変換

対象文字列と置換文字列を半角スペースで区切ってください。(最大5組各10文字まで)

本文フォント

総称名以外はCSSと同様に、"〜"でエスケープしてください。

コードフォント

総称名以外はCSSと同様に、"〜"でエスケープしてください。

保存内容リセット

localStrageに保存してある設定項目をすべて削除し、デフォルト状態へ戻します。

ヘッダー項目移動

キーボード操作