Как мне построить класс на основе RequestGuards?

Я пытаюсь создать эффективный обратный вызов для обработки запросов аутентификации в Lumen 5.2. Однако бизнес-логика становится грязной, и это не то, что мне нравится.

Можно ли построить что-то, что делает то же самое viaRequest но с изолированным классом, который обрабатывает запросы?

Это мое AuthServiceProvider.php код:

public function boot()
{
[...]

$this->app['auth']->viaRequest('api', function ($request) {

$typeOfLogins = ['password', 'oauth'];

switch ($request->input('type'))
{
case 'password':
{
$user = AuthenticatingUser::where([
'email' => $request->input('email')
])->first();

if (! $user || ! $user->authenticable || ! ($user->authenticable instanceof \Core\Entities\User)) {
return null;
}

return ($this->app['hash']->check($request->input('password'), $user->authenticable->password))
? $user
: null;
}

case 'oauth':
{
$user = AuthenticatingUser::where([
'email' => $request->input('email')
])->first();

if (! $user) {
return null;
}

$provider = Provider::where([
'user_id'          => $user->id,
'provider'         => $request->input('provider'),
'provider_user_id' => $request->input('user_id')
])->first();

$methodName = "verify" . ucfirst($request->input('provider')) . "Token";

$verification = $this->$methodName($request->input('token'), $request->input('user_id'));

if (! $verification) {
return null;
}

return ($provider) ? $user : null;
}
}
});
}

protected function verifyFacebookToken($token, $userId)
{
$facebook = app(\SammyK\LaravelFacebookSdk\LaravelFacebookSdk::class);

try
{
$response = $facebook->get('/me?fields=id,name', $token);

$graphUser = $response->getGraphUser();

return $graphUser->getId() === $userId;
} catch (\Facebook\Exceptions\FacebookResponseException $e) {
return false;
}
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]