目前,我正在工作或 lumen(Laravel 的微框架),我已经在该应用程序中集成了护照以供用户登录。
当客户告诉我我们需要同时使用用户名或电子邮件登录时,我被卡住了!
我已经通过更改流明护照内部代码来做到这一点,如下所示
vendor/laravel/passport/src/Bridge/UserRepository.php在此我已将getUserEntityByUserCredentials函数代码更新为
public function getUserEntityByUserCredentials($username, $password, $grantType, ClientEntityInterface $clientEntity)
{
$provider = config('auth.guards.api.provider');
if (is_null($model = config('auth.providers.'.$provider.'.model'))) {
throw new RuntimeException('Unable to determine user model from configuration.');
}
if (method_exists($model, 'findForPassport')) {
$user = (new $model)->findForPassport($username);
} else {
$user = (new $model)->where('email', $username)->orWhere('username', $username)->first();
}
if (! $user ) {
return;
} elseif (method_exists($user, 'validateForPassportPasswordGrant')) {
if (! $user->validateForPassportPasswordGrant($password)) {
return;
}
} elseif (! $this->hasher->check($password, $user->password)) {
return;
}
return new User($user->getAuthIdentifier());
}
现在,当我每次需要更改此代码时更新供应商目录时。
我可以忍受这种头痛的任何简单方法。
任何帮助表示感谢提前感谢。