Как передать токен сброса пароля с почты на страницу формы laravel rest api?

Чтобы передать токен сброса пароля с почты на страницу формы в Laravel REST API, вам потребуется реализовать следующие шаги:

1. Создайте маршрут и метод контроллера для отображения страницы с формой сброса пароля. Например, вы можете добавить следующий код в файл маршрутов routes/api.php:

Route::get('/password/reset/{token}', 'PasswordResetController@showResetForm');

2. Создайте контроллер PasswordResetController, реализующий метод showResetForm, который будет отвечать за отображение страницы с формой сброса пароля. В этом методе вы должны передать токен сброса пароля в представление:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;

class PasswordResetController extends Controller
{
    public function showResetForm($token)
    {
        return view('password.reset', ['token' => $token]);
    }
}

3. Создайте представление для отображения формы сброса пароля. Например, вы можете создать файл resources/views/password/reset.blade.php со следующим кодом:

<!DOCTYPE html>
<html>
<head>
    <title>Password Reset</title>
</head>
<body>
    <h1>Password Reset</h1>
    <form method="POST" action="/api/password/reset">
        <input type="hidden" name="token" value="{{ $token }}">
        <div>
            <label for="email">Email</label>
            <input type="email" name="email" id="email" required>
        </div>
        <div>
            <label for="password">New Password</label>
            <input type="password" name="password" id="password" required>
        </div>
        <div>
            <label for="password_confirmation">Confirm New Password</label>
            <input type="password" name="password_confirmation" id="password_confirmation" required>
        </div>
        <div>
            <button type="submit">Reset Password</button>
        </div>
    </form>
</body>
</html>

4. Реализуйте маршрут и метод контроллера для выполнения сброса пароля. Например, вы можете добавить следующий код в файл маршрутов routes/api.php:

Route::post('/password/reset', 'PasswordResetController@resetPassword');

5. В методе контроллера PasswordResetController@resetPassword вы должны использовать токен сброса пароля, который был передан с формы, и выполнить сброс пароля, используя Laravel's Password Reset Service:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;
use IlluminateSupportFacadesPassword;

class PasswordResetController extends Controller
{
    public function resetPassword(Request $request)
    {
        $request->validate([
            'token' => 'required',
            'email' => 'required|email',
            'password' => 'required|confirmed|min:8',
        ]);

        $response = $this->broker()->reset(
            $request->only('email', 'password', 'password_confirmation', 'token'),
            function ($user, $password) {
                $user->password = bcrypt($password);
                $user->save();
            }
        );

        if ($response == Password::PASSWORD_RESET) {
            return response()->json(['message' => 'Password has been reset successfully']);
        } else {
            return response()->json(['message' => 'Failed to reset password'], 400);
        }
    }

    private function broker()
    {
        return Password::broker();
    }
}

Теперь, когда вы переходите по URL /password/reset/{token}, где {token} - это токен сброса пароля, вы будете перенаправлены на страницу с формой сброса пароля, где токен будет передан как скрытое поле. После заполнения формы и отправки данных, пароль будет сброшен.