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する。