File manager - Edit - /var/www/html/portalHomolog/app/Http/Controllers/Cultura/ArteSacra/MuseuArteSacraController.php
Back
<?php namespace App\Http\Controllers\Cultura\ArteSacra; use App\Http\Controllers\Controller; use App\Models\Cultura\ArteSacra\{ Acervo, ComentarioArte, HistoriaArte, }; use App\Models\User; use App\Http\Requests\Cultura\ArteSacra\{ AccountArteSacraRequest, EditAccountArteSacraRequest, }; use App\Mail\RedefinirSenhaArteSacraMail; use App\Mail\ArteSacraMail; use Illuminate\Http\{ Request, RedirectResponse, }; use Illuminate\Support\{ Str, Facades\DB, Facades\Auth, Facades\Mail, }; use App\Helpers\FileUploadHelper; class MuseuArteSacraController extends Controller { public function login(Request $request) { $request->validate([ 'login' => 'required|max:255', 'password' => 'required|max:100', ], [ 'login.required' => __('* Por favor, informe sua matrícula, CPF ou e-mail!'), 'login.max' => __('* O login excede o limite de caracteres!'), 'password.required' => __('* Por favor, informe a sua senha de acesso!'), 'password.max' => __('* A senha informada possui mais de 100 caracteres!'), ]); if (!$this->recaptcha($request->recaptcha)) { return back()->withErrors([ 'recaptcha' => __('* Recaptcha inválido!'), ])->onlyInput('recaptcha'); } $login = $request->login; $loginField = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : (preg_match('/^\d{3}\.?\d{3}\.?\d{3}-?\d{2}$/', $login) ? 'cpf' : 'matriculation'); if ($loginField === 'cpf') { $login = preg_replace('/[^0-9]/', '', $login); } $credenciais = [ $loginField => $login, 'password' => $request->password, ]; if (Auth::attempt($credenciais, $request->remember)) { $user = Auth::user(); if ($user->status !== 'ATIVADO') { Auth::logout(); return back()->withErrors([ 'login' => __('* O usuário não está ativo! Por favor, entre em contato com o administrador.'), ])->onlyInput('login'); } return $request->ajax() ? response()->json(['message' => 'Login realizado com sucesso!']) : back()->with('success', 'Login realizado com sucesso!'); } return back()->withErrors([ 'login' => __('* Matrícula, CPF ou e-mail e/ou senha incorretos.'), ])->onlyInput('login'); } public function logout(Request $request): RedirectResponse { auth()->logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return $request->ajax() ? response()->json(['message' => 'Usuário deslogado com sucesso!']) : back()->with('success', 'Usuário deslogado com sucesso!'); } public function index() { $acervos = Acervo::where('permitir_exibicao', 'Permitida') ->paginate(9); return view('paginas.cultura.arteSacra.index', compact('acervos')); } public function show($slug) { $nomeOriginal = str_replace('-', ' ', $slug); $arte = Acervo::where('nome_peca', '=', $nomeOriginal)->first(); if (!$arte) { abort(404, 'Arte não encontrada.'); } $historia = HistoriaArte::where('acervo_id', $arte->id)->get(); $comentarios = ComentarioArte::where('acervo_id', $arte->id) ->where('status', 'aceita') ->get(); return view('paginas.cultura.arteSacra.show', compact('arte', 'historia', 'comentarios')); } public function showGaleria(Request $request) { $busca = $request->input('busca'); $query = Acervo::query(); if ($busca) { $query->where('nome_peca', 'like', "%$busca%"); } $query->where('permitir_exibicao', 'Permitida'); $acervos = $query->paginate(9)->appends(['busca' => $busca]); return view('paginas.cultura.arteSacra.galeria', compact('acervos', 'busca')); } public function showRegistrationForm() { return view('paginas.cultura.arteSacra.register'); } public function store(Request $request, $acervoId) { $request->validate([ 'historia_obra' => 'required|string|max:6000', ]); if (!$this->recaptcha($request->recaptcha)) { return back()->withErrors([ 'recaptcha' => __('* Recaptcha inválido!'), ])->onlyInput('recaptcha'); } try { $historia_obra = strip_tags($request->input('historia_obra')); $historia_obra = htmlspecialchars($historia_obra, ENT_QUOTES, 'UTF-8'); DB::beginTransaction(); $comentario = new ComentarioArte([ 'acervo_id' => $acervoId, 'user_id' => auth()->id(), 'historia_obra' => $historia_obra, 'status' => 'pendente', ]); $comentario->save(); DB::commit(); return back()->with('success', 'Seu comentário foi enviado e está pendente de aprovação. Agradecemos por compartilhar!'); } catch (\Exception $e) { DB::rollBack(); return redirect()->back() ->with('error', 'Ocorreu um erro inesperado. Tente novamente mais tarde. ' . $e->getMessage()) ->withInput(); } } public function destroyComentario($id) { $comentario = ComentarioArte::findOrFail($id); if ( auth()->id() !== $comentario->user_id && auth()->user()->permission !== 'GERENCIADOR_DO_CADASTRO_DE_ARTE_SACRA' ) { abort(403, 'Acesso não autorizado'); } try { DB::beginTransaction(); $comentario->delete(); DB::commit(); return back()->with('success', 'Comentário removido com sucesso!'); } catch (\Exception $e) { DB::rollBack(); return redirect()->back() ->with('error', 'Ocorreu um erro ao remover o comentário. Tente novamente mais tarde. ' . $e->getMessage()) ->withInput(); } } public function register(AccountArteSacraRequest $request) { $request->validated(); $path = "default/assets/img/icons/usuario.png"; if ($request->hasFile('photo') && $request->file('photo')->isValid()) { $file = $request->file('photo'); $uploadedPath = FileUploadHelper::processSafeImageUpload($file, 'contas'); if ($uploadedPath) { $path = $uploadedPath; } } try { DB::beginTransaction(); User::create([ "structure_id" => null, "firstName" => $request->firstName, "lastName" => $request->lastName, "cpf" => preg_replace('/[^0-9]/', '', $request->cpf), "phoneNumber" => $request->phoneNumber, "email" => $request->email, "password" => bcrypt($request->password), "status" => 'ATIVADO', "permission" => 'GUEST', "photo" => $path, 'papers' => $this->setPapers($request->papers), 'isPasswordDefault' => 1, ]); DB::commit(); $titulo = "Cadastro Concluído - Arte Sacra"; $corpo = " <p>Obrigado por se cadastrar no sistema de Arte Sacra. Seu cadastro foi realizado com sucesso!</p> <p>Agora você pode acessar a plataforma e aproveitar todos os recursos disponíveis. Caso tenha alguma dúvida ou necessite de ajuda, nossa equipe está à disposição para atendê-lo.</p> "; Mail::to($request->email)->send(new ArteSacraMail( $request->email, $request->firstName . ' ' . $request->lastName, $titulo, $corpo )); return redirect()->route('paginas.cultura.arteSacra.index') ->with("success", __("* O usuário {$request->firstName} foi criado com sucesso!")); } catch (\Exception $e) { DB::rollBack(); return redirect() ->back() ->withInput() ->with('error', 'Erro ao tentar criar esta conta. ' . $e->getMessage()); } } public function showEditForm($id) { $user = User::findOrFail($id); return view('paginas.cultura.arteSacra.edit', compact('user')); } public function update(EditAccountArteSacraRequest $request, $id) { $request->validated(); $ds = DIRECTORY_SEPARATOR; $user = User::findOrFail($id); $path = $user->photo; if ($request->hasFile('photo') && $request->file('photo')->isValid()) { if (file_exists(public_path($user->photo))) { unlink(public_path($user->photo)); } $file = $request->file('photo'); $uploadedPath = FileUploadHelper::processSafeImageUpload($file, 'contas'); if ($uploadedPath) { $path = $uploadedPath; } } try { DB::beginTransaction(); $user->update([ "firstName" => $request->firstName, "lastName" => $request->lastName, "cpf" => preg_replace('/[^0-9]/', '', $user->cpf), "phoneNumber" => $request->phoneNumber, "email" => $user->email, "password" => $request->password ? bcrypt($request->password) : $user->password, "photo" => $path, 'papers' => $this->setPapers($request->papers), ]); DB::commit(); $titulo = "Cadastro Atualizado - Arte Sacra"; $corpo = "<p>Seus dados foram atualizados com sucesso no sistema de Arte Sacra.</p> <p>Agora você pode continuar utilizando a plataforma normalmente. Caso tenha alguma dúvida ou necessite de ajuda, nossa equipe está à disposição para atendê-lo.</p>"; Mail::to($request->email)->send(new ArteSacraMail( $request->email, $request->firstName . ' ' . $request->lastName, $titulo, $corpo )); $redirect = $request->input('redirect_to', route('paginas.cultura.arteSacra.index')); return redirect($redirect)->with('success', "O usuário {$request->firstName} foi atualizado com sucesso!"); } catch (\Exception $e) { DB::rollBack(); return redirect() ->back() ->withInput() ->with('error', 'Erro ao tentar atualizar esta conta. ' . $e->getMessage()); } } public function reset(Request $request) { $validated = $request->validate([ 'email' => 'required|email|exists:users,email', ]); $user = User::where('email', $request->email)->first(); $code = rand(100000, 999999); session([ 'reset_code' => $code, 'reset_email' => $user->email, 'reset_code_expiry' => now()->addMinutes(10), ]); $fullName = $user->firstName . ' ' . $user->lastName; Mail::to($user->email)->send(new RedefinirSenhaArteSacraMail($user->email, $fullName, $code)); return back()->with([ 'email' => $user->email, 'showCodeField' => true, ]); } public function validateCode(Request $request) { $validated = $request->validate([ 'code' => 'required|numeric|digits:6', ]); $sessionCode = session('reset_code'); $expiration = session('reset_code_expiry'); if (!$sessionCode || $sessionCode != $request->code || now()->gt($expiration)) { return back()->withErrors(['code' => 'Código inválido ou expirado!']); } session(['email_reset' => session('reset_email')]); return redirect()->route('paginas.cultura.arteSacra.nova-senha'); } public function showNewPasswordForm() { return view('paginas.cultura.arteSacra.nova-senha'); } public function updatePassword(Request $request) { $request->validate([ 'new_password' => 'required|min:8|confirmed', ]); try { DB::beginTransaction(); $user = User::where('email', session('email_reset'))->first(); if (!$user) { return redirect()->back() ->with('error', 'Usuário não encontrado. Tente novamente.') ->withInput(); } $user->update([ 'password' => bcrypt($request->new_password), ]); session()->forget(['codigo_reset', 'email_reset', 'codigo_reset_expira_em']); DB::commit(); $titulo = "Senha Alterada com Sucesso - Arte Sacra"; $corpo = "<p>Sua senha foi alterada com sucesso no sistema de Arte Sacra.</p> <p>Se você não realizou essa alteração, entre em contato imediatamente com nossa equipe de suporte.</p> <p>Em caso de dúvidas ou dificuldades, estamos à disposição para ajudá-lo.</p> "; Mail::to($user->email)->send(new ArteSacraMail( $user->email, $user->first_name . ' ' . $user->last_name, $titulo, $corpo )); $redirect = $request->input('redirect_to', route('paginas.cultura.arteSacra.index')); return redirect($redirect)->with('success', 'Senha atualizada com sucesso!'); } catch (\Exception $e) { DB::rollBack(); dd("Erro"); return redirect()->back() ->with('error', 'Ocorreu um erro ao atualizar a senha. Tente novamente mais tarde.' . $e->getMessage()) ->withInput(); } } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings