Teste Técnico para Desenvolvedor PHP/Laravel
Antes de começar, certifique-se de ter o Composer instalado na sua máquina. Caso não tenha, você pode baixar e instalar o Composer pelo site oficial:
- Laravel 10
- Php 8
- Mailpit (Teste de E-mail)
- Docker
- bootstrap 5
-
Clone este repositório:
git clone https://github.com/jose-gabriel-bm/teste_tecnico_laravel.git
-
Duplicar arquivo .env.example
-
Renomear a duplicada para .env
-
Dentro da Pasta do projeto, rodar o comando:
docker compose up -d
-
Listar os containers docker:
sudo docker ps -a
-
conctar ao container do laravel:
sudo docker exec -it teste_tecnico_laravel bash -
instalar as dependencias
composer install
-
rodar as migrations
php artisan migrate
-
Startar queue:work
php artisan queue:work
- Para utilizar o sistema, acessar:
http://localhost:8088/login- Para testar o envio de e-mail, acessar o link
http://localhost:8025/No projeto esta sendo usado o Mailpit para testar o envio de e-mails, sem ele nao seria possivel testar a nao ser que usase servidores reais (como Gmail, Outlook ou SMTPs pagos),com ele e possivel testar o envio de e-mail sem enviar nada de verdade para os destinatários. Ele captura os e-mails e mostra tudo numa interface web , acessando pelo navegador.
para testar o envio de e-mail basta acecar o link
http://localhost:8025/Usuário envia o formulário
↓
Controller recebe a requisição valida os dados com Request
↓
Controller envia os dados para o service.
↓
Service cadastra o processo e dispara o Job.
↓
dispatch(new SendProcessNotification($processo))
↓
[Job vai para a fila no banco de dados]
↓
[queue:work fica rodando e "escutando" a fila]
↓
[Job é executado em segundo plano]
↓
E-mail é enviado para os signatários
validacao simples feita com Auth::attempt.
$credentials = $request->validate([
'email' => 'required|email',
'password' => 'required',
]);
if (!Auth::attempt($credentials)) {
throw ValidationException::withMessages([
'email' => ['E-mail ou senha inválidos.'],
]);
}
$request->session()->regenerate();
return redirect()
->intended('/signatarios/listagem')
->with('success', 'Login realizado com sucesso!');Verificacao de autenticacao nas rotas, conforme exemplo abaixo:
Route::prefix('/signatarios')->group(function () {
Route::get('/listagem', [SignatoryController::class, 'index'])->name('signatory.index')->middleware('auth');
Route::post('/cadastro', [SignatoryController::class, 'register'])->name('signatory.register')->middleware('auth');
Route::delete('/delete/{id}', [SignatoryController::class, 'destroy'])->name('signatory.destroy')->middleware('auth');
Route::post('/update', [SignatoryController::class, 'update'])->name('signatory.update')->middleware('auth');
});- Este projeto não utiliza Laravel Mix. Por se tratar de um teste técnico, os arquivos CSS e JS foram adicionados diretamente em public/