File manager - Edit - /var/www/html/portal/app/Http/Controllers/MeioAmbiente/CastracaoAnimal/CastracaoAuthPublicoController.php
Back
<?php namespace App\Http\Controllers\MeioAmbiente\CastracaoAnimal; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Models\MeioAmbiente\CastracaoAnimal\Tutor; use App\Models\User; use App\Models\Endereco; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use App\Mail\EsqueceuSenhaCastracaoMail; class CastracaoAuthPublicoController extends Controller { private $permissao = "GERENCIADOR_DE_CASTRACAO_ANIMAL"; public function login(Request $request) { if ($request->isMethod('post')) { $credenciais = $request->validate([ 'login' => 'required|string|max:255', 'password' => 'required' ], [ 'login.required' => __('* Por favor, informe seu e-mail, matrícula ou CPF!'), 'password.required' => __('* Por favor, informe a sua senha de acesso!') ]); $loginInput = $credenciais['login']; $user = User::where(function ($query) use ($loginInput) { $query->where('email', $loginInput) ->orWhere('cpf', $loginInput) ->orWhere('matriculation', $loginInput); })->first(); if ($user) { $tutor = $user->castracao; if ($tutor) { if (Hash::check($credenciais['password'], $user->password)) { return redirect()->route('paginas.castracao.paginaAcompanhamento', [$tutor->id]); } else { return redirect()->route('paginas.castracao.login')->with('error', __('* Login ou senha inválidos!')); } } else { return redirect()->route('paginas.castracao.login')->with('error', __('* Não encontramos o seu cadastro de Castração.')); } } else { return redirect()->route('paginas.castracao.login')->with('error', __('* Login ou senha inválidos!')); } } return view('paginas.castracao.login'); } public function logout() { Auth::logout(); return redirect()->route('paginas.castracao.login')->with('success', 'Você saiu com sucesso!'); } public function esqueciSenha(Request $request) { if ($request->isMethod('post')) { $request->merge([ 'cpf' => preg_replace('/[^0-9]/', '', $request->cpf), ]); $request->validate([ 'cpf' => 'required|exists:users,cpf', 'email' => 'required|email|exists:users,email', ], [ 'cpf.required' => 'Por favor, informe o número do seu CPF!', 'cpf.exists' => 'O CPF não está cadastrado!', 'email.required' => 'Por favor, informe o seu e-mail!', 'email.email' => 'O e-mail informado é inválido!', 'email.exists' => 'O e-mail informado não está cadastrado!', ]); $user = User::where('cpf', $request->cpf)->where('email', $request->email)->first(); $isTutor = Tutor::where('user_id', $user->id)->exists(); if (!$isTutor) { return back()->with('error', '* Apenas Tutores podem redefinir a senha.'); } $code = random_int(1000, 9999); $now = now()->addMinutes(10); Session::put('reset_code', $code); Session::put('reset_user_id', $user->id); Session::put('reset_expires_at', $now); Mail::to($user->email) ->send(new EsqueceuSenhaCastracaoMail([ 'code' => $code, 'reset_code' => $code, 'reset_user_id' => $user->id, 'reset_expires_at' => $now, 'email' => $user->email, 'subject' => "Seu código de recuperação de senha é: $code", 'name' => $user->firstName, ])); return redirect()->route('paginas.castracao.verificarCodigo') ->with('success', 'Um código foi enviado para seu e-mail. Ele pode levar até 5 minutos para chegar!'); } return view('paginas.castracao.esqueciSenha'); } public function redefinirSenha(Request $request) { if ($request->isMethod('post')) { $request->validate([ 'password' => 'required|confirmed|min:6', ]); if (!Session::has('reset_user_id')) { return back()->with('error', '* Sessão expirada. Solicite um novo código.'); } $user = User::find(Session::get('reset_user_id')); if (!$user) { return back()->with('error', '* Usuário não encontrado.'); } try { DB::beginTransaction(); $user->password = Hash::make($request->password); $user->save(); Session::forget(['reset_code', 'reset_user_id', 'reset_expires_at']); DB::commit(); return redirect()->route('paginas.castracao.login')->with('success', 'Senha redefinida com sucesso.'); } catch (\Exception $e) { DB::rollBack(); return redirect() ->back() ->withInput() ->with('error', 'Erro ao tentar atualizar sua senha. ' . $e->getMessage()); } } return view('paginas.castracao.redefinirSenha'); } public function verified(Request $request) { if ($request->isMethod("POST")) { if ($this->validaCPF($request->cpf)) { } else { return redirect("/cadastro/castracao/verified") ->with("error", __("* O CPF informado é inválido!")); } if (User::where('cpf', $this->clearCPF($request->input("cpf")))->whereHas('castracao')->first() != null) { return redirect("cadastro/castracao/")->with('error', 'Este CPF já está cadastrado. Faça login para acessar sua conta ou recupere sua senha caso tenha esquecido.'); } Session::put('cpfTmp', $request->cpf); return redirect("cadastro/tutors/create"); } return view('paginas.castracao.verified'); } public function verificarCodigo(Request $request) { if ($request->isMethod('post')) { $request->validate([ 'code' => 'required|numeric', ]); if (!Session::has('reset_code') || !Session::has('reset_expires_at')) { return back()->with('error', '* Código expirado ou inválido.'); } if (now()->greaterThan(Session::get('reset_expires_at'))) { Session::forget(['reset_code', 'reset_user_id', 'reset_expires_at']); return back()->with('error', '* Código expirado. Solicite um novo.'); } if ($request->code != Session::get('reset_code')) { return back()->with('error', '* Código incorreto.'); } else { return redirect()->route('paginas.castracao.redefinirSenha'); } } return view('paginas.castracao.verificarCodigo'); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings