LoginSignup
2

More than 3 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する。

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
What you can do with signing up
2