File manager - Edit - /var/www/html/portal/app/Http/Services/Accounts/GovBrService.php
Back
<?php namespace App\Http\Services\Accounts; use App\Models\User; use App\Models\Pessoa; use App\Models\Permissao; use App\Http\Controllers\Controller; use App\Http\Resources\Accounts\GovBrResource; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Log; use Illuminate\Http\RedirectResponse; class GovBrService extends Controller { protected $User = User::class; protected $Pessoa = Pessoa::class; protected $Permissao = Permissao::class; public function getUserWithCPF($cpf): ?User { return $this->User::where("cpf", $cpf)->first(); } public function create(Array $array_user, Array $array_pessoa): RedirectResponse { try { Log::info('GOV.BR Service: Criando usuário', ['cpf' => $array_user['cpf'] ?? 'N/A']); DB::beginTransaction(); $user = $this->User::create($array_user); Log::info('GOV.BR Service: Usuário criado', ['user_id' => $user->id]); $array_pessoa['user_id'] = $user->id; $this->Pessoa::create($array_pessoa); Log::info('GOV.BR Service: Pessoa criada'); $this->concederPermissoesPadrao($user); Log::info('GOV.BR Service: Permissões concedidas'); DB::commit(); // Autentica o usuário manualmente e regenera a sessão Auth::login($user); request()->session()->regenerate(); Log::info('GOV.BR Service: Usuário autenticado', [ 'user_id' => $user->id, 'is_authenticated' => Auth::check(), 'authenticated_user_id' => Auth::id(), ]); GovBrResource::logChannel($user->id, $user->cpf, $user->govbr_email, $user->govbr_sub); $contaAngraUrl = route('admin.contaAngra.index'); Log::info('GOV.BR Service: Redirecionando para Conta Angra', ['url' => $contaAngraUrl]); return redirect($contaAngraUrl) ->with('success', __('Conta Angra criada com sucesso.')); } catch (\Exception $e) { DB::rollBack(); Log::error('GOV.BR Service: Erro ao criar usuário', [ 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString(), 'file' => $e->getFile(), 'line' => $e->getLine(), ]); GovBrResource::logError($e); return redirect()->route('admin.login') ->with('error', 'Erro ao autenticar com GOV.BR: ' . $e->getMessage()); } } public function update(User $user, Array $array_user, Array $array_pessoa): RedirectResponse { try { Log::info('GOV.BR Service: Atualizando usuário', ['user_id' => $user->id]); DB::beginTransaction(); $user->fill($array_user); $user->save(); Log::info('GOV.BR Service: Usuário atualizado'); $this->Pessoa::updateOrCreate(["user_id" => $user->id], $array_pessoa); Log::info('GOV.BR Service: Pessoa atualizada'); $gerenciadorContaAngra = $this->Permissao::where([ ["user_id", "=", $user->id], ["permissao", "=", "GERENCIADOR_DE_CONTA_ANGRA"], ])->first(); if (!isset($gerenciadorContaAngra->id)) { $this->concederPermissao($user, "GERENCIADOR_DE_CONTA_ANGRA"); Log::info('GOV.BR Service: Permissão GERENCIADOR_DE_CONTA_ANGRA concedida'); } $guest = $this->Permissao::where([ ["user_id", "=", $user->id], ["permissao", "=", "GUEST"], ])->first(); if (!isset($guest->id)) { $this->concederPermissao($user, "GUEST"); Log::info('GOV.BR Service: Permissão GUEST concedida'); } DB::commit(); // Autentica o usuário manualmente e regenera a sessão Auth::login($user); request()->session()->regenerate(); Log::info('GOV.BR Service: Usuário autenticado', [ 'user_id' => $user->id, 'is_authenticated' => Auth::check(), 'authenticated_user_id' => Auth::id(), ]); GovBrResource::logChannel($user->id, $user->cpf, $user->govbr_email, $user->govbr_sub); $contaAngraUrl = route('admin.contaAngra.index'); Log::info('GOV.BR Service: Redirecionando para Conta Angra', ['url' => $contaAngraUrl]); return redirect($contaAngraUrl); } catch (\Exception $e) { DB::rollBack(); Log::error('GOV.BR Service: Erro ao atualizar usuário', [ 'user_id' => $user->id ?? null, 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString(), 'file' => $e->getFile(), 'line' => $e->getLine(), ]); GovBrResource::logError($e); return redirect()->route('admin.login') ->with('error', 'Erro ao autenticar com GOV.BR: ' . $e->getMessage()); } } private function concederPermissoesPadrao(User $user): void { $permissoes = [ 'GERENCIADOR_DE_CONTA_ANGRA', 'GUEST', ]; foreach ($permissoes as $p) { if (!Permissao::where('user_id', $user->id)->where('permissao', $p)->exists()) { Permissao::create([ 'user_id' => $user->id, 'permissao' => $p, 'visualizar' => 1, 'adicionar' => 1, 'editar' => 1, 'excluir' => 1, 'status' => 'ATIVADO', ]); } } } private function concederPermissao(User $user, $permissao): void { if (!Permissao::where('user_id', $user->id)->where('permissao', $permissao)->exists()) { Permissao::create([ 'user_id' => $user->id, 'permissao' => $permissao, 'visualizar' => 1, 'adicionar' => 1, 'editar' => 1, 'excluir' => 1, 'status' => 'ATIVADO', ]); } } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings