Прежде всего, извините за мой плохой английский
В настоящее время я использую PasswordBroker
фасад для сброса пароля пользователей.
Ниже приведен скрипт для выполнения:
use Password; // Facade: Illuminate\Auth\Passwords\PasswordBroker
...
...
$userCredentials = $request->only(
'email', 'password', 'password_confirmation', 'token'
);
$response = Password::reset(
$userCredentials,
function (User $user, $password) {
$user->password = $password;
$user->save();
}
);
При наличии правильного адреса электронной почты, токена и действительного пароля все пользователи могут легко сбросить свой пароль.
Новая моя система была обновлена. Все электронные письма в таблице users
были зашифрованы (AES_ENCRYPT
), поэтому мне нужно внести некоторые изменения, чтобы их применить.
Вот getUser
метод Password
фасад
public function getUser(array $credentials)
{
$credentials = Arr::except($credentials, ['token']);
$user = $this->users->retrieveByCredentials($credentials);
if ($user && ! $user instanceof CanResetPasswordContract) {
throw new UnexpectedValueException('User must implement CanResetPassword interface.');
}
return $user;
}
Мне нужны некоторые where
критерии, такие как
$user->where(
DB::raw("AES_DECRYPT(email, 'encryption key')"),
$userEmail
);
Как применить критерии без изменения оригинального исходного кода Laravel?