GovBrLogin

 avatar
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