Сброс пароля Laravel с помощью AJAX (AngularJS) - PullRequest
0 голосов
/ 25 марта 2019

Я создаю приложение с Laravel 5.7 и angularjs.Я хотел бы сделать авторизацию через ajax.Вход и регистрация работает нормально, но сброс паролей работает некорректно.Проблема в том, что нет сообщения об ошибке или об успешном обратном вызове.Я заметил, что мой запрос идет по правильному маршруту, но затем он перенаправляет меня на мою домашнюю страницу.Так что в ответ я всегда получаю свою страницу индекса.

По умолчанию laravel выдает ошибку «Мы не можем найти пользователя с таким адресом электронной почты».Но если вы будете использовать ajax, он ничего не выдаст, и я не знаю, в чем проблема, потому что вход в систему и регистрация выдают ошибки успешно.

//HTML template
<form ng-submit="auth('{{ route('password.email') }}')">
    @csrf
    <div>
        <div>Enter your e-mail</div>
        <div>We will send you an email with a link to create a new password.
        </div>
    <div ng-repeat="error in authErrors.errors">@{{error[0]}}</div>
    </div>
    <div>
        <label for="email">{{ __('E-Mail Address') }}</label>
        <input name="email" ng-model="authInfo.email" type="email" required>
    </div>
    <button type="submit" name="submit">{{ __('Send Password Reset Link') }}</button>
</form>
//JS
    $scope.authInfo = {
        name: null,
        email: null,
        password: null,
        passwordConfirmation: null,
        remember: false
    }
    $scope.authErrors = {};

    $scope.auth = function(route){
        $http({
            method: 'POST',
            url: route,
            data: $scope.authInfo
        }).then(function(response) {
            console.log($scope.authInfo);
            console.log(response);
        }, function(response) {
            console.log($scope.authInfo);
            $scope.authErrors = response.data;
            console.log(response.data)
        })
    }

Все контроллеры аутентификации по умолчанию.
Я также протестировал ajax на проекте clear и получил тот же результат.Если я не отправлю электронное письмо в качестве данных, будет выдано сообщение об ошибке, что электронной почты нет.Но если я отправлю электронное письмо, я получу только перенаправление.
Я бы хотел получить тот же результат, что и функции регистрации и входа в систему.

Любые предложения, как это исправить, пожалуйста?

1 Ответ

0 голосов
/ 25 марта 2019

Он ведет себя как ожидание, так как эта функция будет возвращать html как в случае успеха, так и в случае неудачи.То, что вам нужно сделать, это переопределить функции, как показано ниже -

public function sendResetLinkEmail(Request $request)
{

    if($request->ajax()) {

        $this->validateEmail($request);

        // We will send the password reset link to this user. Once we have attempted
        // to send the link, we will examine the response then see the message we
        // need to show to the user. Finally, we'll send out a proper response.
        $response = $this->broker()->sendResetLink(
            $request->only('email')
        );

        return $response == Password::RESET_LINK_SENT
            ? [
                'msg' => 'Successful'
            ]
            : [
                'msg' => 'Reset email sending failed.'
            ];
    }

    return [
        'msg' => 'Un-expected method calls'
    ];
}

Поместите функцию в ForgotPasswordController

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...