LoginSignup
1
2

More than 5 years have passed since last update.

Laravel(5.7)のパスワードリセット機能をAPIからキックする。

Last updated at Posted at 2018-11-23

Laravelではmake authすれば登録やらパスワードリセットやら設定してくれますが、標準のルートではCSRFのtokenを要求されるため別途API用に専用のルートを作成して対応します。

 追記

Email Verifyとまとめた記事にしました。そちらをご利用ください。

前提

make:authにより認証機能が設定されている。

php artisan make:auth

Controller

ここではUserController.phpを作成して対応しますが、なんでもいいです。

php artisan make:controller UserController

実装します。sendResetLinkEmail()をオーバーライドすればいいようです。

UserController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
use Illuminate\Support\Facades\Password;

class UserController extends Controller
{
    use SendsPasswordResetEmails;

    public function __construct()
    {
        $this->middleware('guest');
    }

    public function sendResetLinkEmail(Request $request)
    {
        $this->validateEmail($request);

        $response = $this->broker()->sendResetLink(
            $request->only('email')
        );

        return $response == Password::RESET_LINK_SENT
            ? response()->json(['message' => 'Reset link sent to your email.', 'status' => true], 201)
            : response()->json(['message' => 'Unable to send reset link', 'status' => false], 401);
    }
}

Route

ルートもお好みで。

api.php
Route::post('forgot/password', 'UserController@sendResetLinkEmail')->name('forgot.password');

動作確認

上記route (http://localhost:8000/forgot/password) に対して、リセットしたいemailをpostする。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2