Сброс пароля Laravel с помощью mongodb - PullRequest
0 голосов
/ 30 мая 2018

Я перевожу старый проект (сделанный в Zend Framework) на laravel 5.5.База данных Монго дБ.Я использую laravel-mongodb для соединения laravel и mongo.

Я уже переопределяю функциональность входа в систему laravel, потому что поля таблицы не совпадают с полями laravel по умолчанию.Логин работает нормально.

В настоящее время, когда я пытаюсь сбросить пароль, я получаю сообщение об ошибке «Мы не можем найти пользователя с таким адресом электронной почты».Как я могу переопределить функцию сброса пароля?

В пользовательской таблице имена полей: usrEmail и usrPassword.Рабочий код логина приведен ниже.

В настоящее время, когда я пытаюсь сбросить пароль, я получаю сообщение об ошибке We can't find a user with that e-mail address. Как я могу переопределить функцию сброса пароля?

В пользовательской таблице имена полей: usrEmail и usrPassword.Рабочий код входа в систему приведен ниже.

LoginController.php

protected function attemptLogin(Request $request)
    {
        $authUser     = User::where('usrEmail', $request->email)
            ->whereIn('usrlId', [1, 2, 5, 6])
            ->first();

        if($authUser) {
            $password = md5(env('MD5_Key'). $request->password. $authUser->usrPasswordSalt);
            $user     = User::where('usrEmail', $request->email)
                ->where('usrPassword', $password)
                ->where('usrActive', '1')
                ->where('usrEmailConfirmed', '1')
                ->where('is_delete', 0)
                ->where('usrlId', 2)
                ->first();

            if ($user) {
                $updateLoginTime            = User::find($user->_id);
                $updateLoginTime->lastlogin = date('Y-m-d H:i:s');
                $updateLoginTime->save();

                $this->guard()->login($user, $request->has('remember'));
                return true;
            }
            else {
                return false;
            }
        }

        return false;
    }

1 Ответ

0 голосов
/ 20 июня 2018

Попробуйте поместить это в Auth/ResetsPasswordController.php

protected function credentials(Request $request)
{
    $data = $request->only(
        'password', 'password_confirmation', 'token'
    );

    $data['usrEmail'] = $request->get('email');

    return $data;
}

По умолчанию ->only( также включает в себя поле email, но, поскольку оно отличается в вашей базе данных, нам нужно было переопределить эту функцию, котораяпо умолчанию определено в признаке ResetsPasswords.

Это должно гарантировать, что любое поле email в потоке сброса пароля (как при запросе электронной почты, так и в форме после нажатия на ссылку по электронной почте) будет указывать направильное поле в вашей базе данных.

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