GovBrLogin
unknown
php
a year ago
1.9 kB
8
Indexable
<?php public function handleGovBrCallback(Request $request) { if (!$this->govBrAuthService->validateState($request->state)) { Log::error('Estado inválido na callback', [ 'session_state' => $this->govBrAuthService->getState(), 'request_state' => $request->state ]); return redirect('/')->with('error', 'Estado inválido.'); } try{ $tokens = $this->govBrAuthService->getTokens($request->code); // Validar e extrair as claims dos tokens $accessTokenClaims = $this->govBrAuthService->extractAccessTokenClaims($tokens['access_token']); $idTokenClaims = $this->govBrAuthService->extractIdTokenClaims($tokens['id_token']); $cpf = $accessTokenClaims['sub']; $trustData = $this->govBrAuthService->getTrustData($tokens['access_token'], $cpf); // Preparando a URL da imagem com o access token $idTokenClaims['userPhoto'] = $this->govBrAuthService->getUserPhoto($idTokenClaims['picture'], $tokens['access_token']); $idTokenClaims['nivel'] = $trustData; session(['userData' => $idTokenClaims]); if (!$this->govBrAuthService->hasRequiredTrustLevel($trustData)) { Log::info('Usuário não possui nível Prata', ['trust_data' => $trustData]); return redirect('/')->with('error', 'Somente usuários que possuem Conta GOV.BR nos níveis Prata e Ouro poderão participar do processo de votação do CONSEC.'); } return redirect('identificacao/eleitor'); } catch(\Exception $e) { Log::error('Erro no callback do GovBr', ['message' => $e->getMessage()]); return redirect('identificacao/eleitor')->with('error', 'Erro ao autenticar com o GovBr.'); } }
Editor is loading...
Leave a Comment