File manager - Edit - /var/www/html/portalHomolog/app/Http/Services/Accounts/NovaContaAngraService.php
Back
<?php namespace App\Http\Services\Accounts; use App\Http\Controllers\Controller; use App\Models\User; use App\Models\Permissao; use App\Models\Accounts\SolicitanteDeConta; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Mail; use Carbon\Carbon; use Illuminate\Support\Facades\Auth; use Illuminate\Http\RedirectResponse; use App\Http\Requests\Accounts\NovaContaAngraRequest; use App\Mail\NovaContaConfirmacaoMail; class NovaContaAngraService extends Controller { public function store(NovaContaAngraRequest $request): RedirectResponse { $token = $request->token; $solicitante = SolicitanteDeConta::where('token', $token)->first(); if ($solicitante) { $fullName = $this->resolveFullname($request->fullName); if (Carbon::parse($solicitante->expires_at)->isPast()) { return redirect()->route('admin.novaConta', ['token' => $token]) ->with('error', __('Token inválido ou expirado.')) ->withInput(); } $cpf = $this->clearCPF($solicitante->cpf); $email = mb_strtolower($solicitante->email); $senhaHash = Hash::make($request->password); if (User::where('cpf', $cpf)->orWhere('email', $email)->exists()) { return redirect()->route('admin.novaConta', ['token' => $token]) ->with('error', __('CPF ou e‑mail já cadastrado.')) ->withInput(); } $phoneNumber = preg_replace('/[^0-9]/', '', $request->phoneNumber); $array_user = [ 'structure_id' => null, "firstName" => $fullName["firstName"], "lastName" => $fullName["lastName"], "cpf" => $cpf, "phoneNumber" => $phoneNumber, "email" => $email, "password" => $senhaHash, "status" => 'ATIVADO', "photo" => $this->getPathImageUserField($request, 'photo'), "isPasswordDefault" => 0, ]; $user = $this->criarUsuario($solicitante, $array_user, $token); if ($user instanceof User) { return $this->login($email, $request->password); } return $user; } return redirect()->route('admin.novaConta', ['token' => $token]) ->with('error', __('Token inválido.')) ->withInput(); } 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()) { $reg = new Permissao(); $reg->user_id = $user->id; $reg->permissao = $p; $reg->visualizar = 1; $reg->adicionar = 1; $reg->editar = 1; $reg->excluir = 1; $reg->status = 'ATIVADO'; $reg->save(); } } } private function criarUsuario(SolicitanteDeConta $solicitante, Array $array_user, string $token): RedirectResponse|User { try { DB::beginTransaction(); $user = User::create($array_user); $this->concederPermissoesPadrao($user); $array_solicitante = [ 'user_id' => $user->id, 'status' => 'VALIDADO', ]; $solicitante->fill($array_solicitante); $solicitante->save(); DB::commit(); Mail::to($user->email)->send(new NovaContaConfirmacaoMail($user->firstName)); return $user; } catch (\Exception $e) { DB::rollBack(); return redirect()->route('admin.novaConta', ['token' => $token]) ->with('error', __('Não foi possível concluir a criação da conta.')) ->withInput(); } } private function login(string $email, string $senha): RedirectResponse { $credenciais = [ 'email' => mb_strtolower($email), 'password' => $senha, ]; if (Auth::attempt($credenciais, true)) { $user = Auth::user(); if ($user->status !== 'ATIVADO') { Auth::logout(); return redirect()->route('admin.login') ->with('error', __('Usuário não está ativo.')); } request()->session()->regenerate(); if ($user->isPasswordDefault) { return redirect()->route('admin.resetPassword') ->with('success', __('Conta criada com sucesso. Defina sua nova senha.')); } return redirect()->route('admin.contaAngra.index') ->with('success', __('Conta Angra criada com sucesso.')); } return redirect()->route('admin.login') ->with('error', __('Não foi possível realizar login automático.')); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings