File manager - Edit - /var/www/html/portalHomolog/app/Http/Controllers/MeioAmbiente/CastracaoAnimal/CastracaoPublicoController.php
Back
<?php namespace App\Http\Controllers\MeioAmbiente\CastracaoAnimal; use Illuminate\Support\Facades\Hash; use Illuminate\Http\Request; use App\Http\Requests\MeioAmbiente\CastracaoAnimal\CastracaoTutorsRequest; use App\Models\CastracaoAnimal\Tutor; use App\Models\User; use App\Models\Animal; 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\Http\RedirectResponse; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Validator; use App\Http\Requests\AnimalPublicoRequest; use App\Helpers\FileUploadHelper; use App\Mail\EsqueceuSenhaCastracaoMail; use App\Models\Raca; class CastracaoPublicoController extends Controller { 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 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/fibromialgia/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/castracao/cadastro-castracao"); } return view('paginas.castracao.verified'); } public function cadastroCastracao(Request $request) { $user = null; $cpfTmp = session('cpfTmp'); Session::forget('cpfTmp'); return view('paginas.castracao.cadastroCastracao', compact('user', 'cpfTmp')); } public function cadastroStore(Request $request) { $request->validate([ 'cpf' => 'required|string|max:14', 'email' => 'required|email', 'nome_completo' => 'required|string', 'phoneNumber' => 'required|string', 'password' => 'required|string', 'tipo_tutor' => 'required|string', 'photo' => 'nullable|image|mimes:jpg,jpeg,png|max:2048', 'cep' => 'required|string', 'logradouro' => 'required|string', 'complemento' => 'nullable|string', 'numero' => 'nullable|string', 'bairro' => 'required|string', 'cidade' => 'required|string', 'uf' => 'required|string|max:2', ]); $ds = DIRECTORY_SEPARATOR; $path = $user?->photo ?? "pmar{$ds}assets{$ds}img{$ds}icons{$ds}usuario.png"; if ($request->hasFile('photo') && $request->file('photo')->isValid()) { $file = $request->file('photo'); $uploadedPath = FileUploadHelper::processSafeImageUpload($file, 'contas'); if ($uploadedPath) { // Remove o prefixo "pmar/assets/img/" para manter compatibilidade $path = str_replace("pmar{$ds}assets{$ds}img{$ds}", "", $uploadedPath); } } DB::beginTransaction(); try { $user = User::where('cpf', $request->cpf)->first(); if (!$user) { $user = User::create([ 'id' => Str::uuid(), 'cpf' => $request->cpf, 'email' => $request->email, 'structure_id' => null, 'firstName' => explode(' ', $request->nome_completo)[0], 'lastName' => implode(' ', array_slice(explode(' ', $request->nome_completo), 1)), 'phoneNumber' => $request->phoneNumber, 'password' => bcrypt($request->password), 'photo' => $path, 'status' => 'ATIVADO', ]); } else { $user->update([ 'email' => $request->email, 'firstName' => explode(' ', $request->nome_completo)[0], 'lastName' => implode(' ', array_slice(explode(' ', $request->nome_completo), 1)), 'phoneNumber' => $request->phoneNumber, 'photo' => $this->saveUserPhoto($request, $user), ]); } Tutor::updateOrCreate( ['user_id' => $user->id], [ 'nome_completo' => $request->nome_completo, 'tipo_tutor' => $request->tipo_tutor, ] ); // Endereço Endereco::updateOrCreate( ['user_id' => $user->id], [ 'owner_id' => $user->id, 'cep' => $request->cep, 'logradouro' => $request->logradouro, 'complemento' => $request->complemento, 'numero' => $request->numero, 'bairro' => $request->bairro, 'cidade' => $request->cidade, 'uf' => strtoupper($request->uf), 'status' => 'ATIVADO', 'domicilio' => 'OUTROS', ] ); DB::commit(); return redirect()->route('admin.castracao.index')->with('success', 'Tutor cadastrado com sucesso!'); } catch (\Exception $e) { DB::rollBack(); return back()->withErrors(['error' => 'Erro ao cadastrar tutor: ' . $e->getMessage()]); } } public function resetPassword(Request $request) { $user = $this->__checkUserAuth(); if (!$user->isPasswordDefault) { return redirect()->intended(route("paginas.castracao.paginaAcompanhamento", [$user->castracao()->id])); } if ($request->isMethod('get')) { return view('paginas.fibromialgia.resetPassword'); } $validator = Validator::make($request->all(), [ 'password' => ['required', 'string', 'min:6'], 'password_repeat' => ['required', 'string', 'same:password'], ], [ 'password.required' => 'A nova senha é obrigatória.', 'password.min' => 'A senha deve conter no mínimo 6 caracteres.', 'password_repeat.required' => 'Você deve repetir a senha.', 'password_repeat.same' => 'As senhas informadas não coincidem.', ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } try { DB::beginTransaction(); $user->password = Hash::make($request->password); $user->isPasswordDefault = 0; $user->save(); DB::commit(); return redirect()->route('paginas.castracao.login')->with('success', 'Sua senha foi redefinida com sucesso.<br/>Faça login com sua nova senha.'); } catch (\Exception $e) { DB::rollBack(); return redirect() ->back() ->withInput() ->with('error', 'Erro tentar redefinir a sua senha. ' . $e->getMessage()); } return view('paginas.castracao.resetPassword'); } private function __checkUserAuth() { $user = Auth::user(); if (!$user) { return redirect()->back()->with('error', 'Usuário não autenticado.'); } return $user; } public function cadastroAnimal($tutorId) { $racas = Raca::orderBy('nome_raca')->get(); return view('paginas.castracao.create-animal', compact('racas', 'tutorId')); } public function cadastroStoreAnimal(AnimalPublicoRequest $request, $tutorId) { DB::beginTransaction(); try { Animal::create([ 'tutor_id' => $tutorId, 'nome_animal' => $request->nome_animal, 'especie' => $request->especie, 'raca_id' => $request->raca_id, 'sexo' => $request->sexo, 'tipo' => $request->tipo, 'peso' => $request->peso, 'idade' => $request->idade, 'idade_em' => $request->idade_em, ]); DB::commit(); return redirect()->route('paginas.castracao.paginaAcompanhamento', ['castracao' => $tutorId]) ->with('success', 'Animal cadastrado com sucesso!'); } catch (\Exception $e) { DB::rollBack(); return back()->withErrors(['error' => 'Erro ao cadastrar animal: ' . $e->getMessage()]); } } public function editAnimal($id) { $animal = Animal::findOrFail($id); $tutor = $animal->tutor; $racas = Raca::orderBy('nome_raca')->get(); return view('paginas.castracao.edit-animal', compact('animal', 'tutor', 'racas')); } public function updateAnimal(Request $request, $id) { $request->validate([ 'nome_animal' => 'required|string|max:255', 'especie' => 'required|string', 'idade' => 'nullable|integer', 'idade_em' => 'nullable|string', 'raca_id' => 'required|exists:racas,id', 'peso' => 'nullable|numeric', 'sexo' => 'required|string', 'tipo' => 'nullable|string', ]); DB::beginTransaction(); try { $animal = Animal::findOrFail($id); $animal->update([ 'nome_animal' => $request->nome_animal, 'especie' => $request->especie, 'idade' => $request->idade, 'idade_em' => $request->idade_em, 'raca_id' => $request->raca_id, 'peso' => $request->peso, 'sexo' => $request->sexo, 'tipo' => $request->tipo, ]); DB::commit(); return redirect()->route('paginas.castracao.paginaAcompanhamento', ['tutorId' => $animal->tutor_id]) ->with('success', 'Animal atualizado com sucesso!'); } catch (\Exception $e) { DB::rollBack(); return back()->withErrors(['error' => 'Erro ao atualizar animal: ' . $e->getMessage()]); } } public function destroyAnimal($id) { DB::beginTransaction(); try { $animal = Animal::findOrFail($id); $tutorId = $animal->tutor_id; $animal->delete(); DB::commit(); return redirect()->route('paginas.castracao.paginaAcompanhamento', ['tutorId' => $tutorId]) ->with('success', 'Animal excluído com sucesso!'); } catch (\Exception $e) { DB::rollBack(); return back()->withErrors(['error' => 'Erro ao excluir o animal: ' . $e->getMessage()]); } } public function castracaoPaginaAcompanhamento($id) { $tutor = Tutor::with('animals')->findOrFail($id); return view('paginas.castracao.paginaAcompanhamento', compact('tutor')); } public function atualizarCadastro(Request $request) { } 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