fbpx

Autenticação no Laravel 9 com o Laravel Breeze

Autenticação no Laravel 9 com o Laravel Breeze

Saudações devs! 👊😎

Neste post vamos aprender como usar o Laravel Breeze para criar um sistema simples de autenticação.

Sim, o Laravel vem com uma estrutura pronta e personalizável para login, incluindo cadastro de usuário e recuperação de senha.

Let’s code! 🚀

🚀 ATENÇÃO! Para esse exemplo irei usar o Laravel 9.x

Passo 1 – Criar o projeto

Para esse exemplo, vou criar um novo projeto. Se você já possui um projeto e quer adicionar o login, recomendo fazer uma cópia ou, caso esteja usando o Git, criar uma branch para testar esse recurso.

#criar um projeto usando o Laravel Installer
laravel new breeze-project

#criar um projeto usando o composer
composer create-project laravel/laravel breeze-project

Passo 2 – Criar e configurar o banco de dados

Abra o gerenciador do MySQL ou Postgres e crie um banco de dados com o nome que achar adequado. Neste exemplo estou usando o mesmo nome do projeto: breeze_project.

Abra o arquivo .env e ajuste as configurações do banco de dados, segundo o SGBD que de sua preferência:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=breeze_project
DB_USERNAME=root
DB_PASSWORD=password
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=breeze_project
DB_USERNAME=postgres
DB_PASSWORD=password

Agora vamos executar as migrations que já vem predefinidas para criar o schema do Banco de Dados. Note que o comando deve ser executando estando dentro da pasta do projeto.

 php artisan migrate

Passo 3 – Instalar o Laravel Breeze

Agora vamos instalar o pacote Breeze, ou seja, baixar as dependências necessárias, usando o seguinte comando:

composer require laravel/breeze --dev

Apesar das dependências estarem instaladas, a estrutura da autenticação, ou seja, views, controllers e outros elementos ainda não foram criados. Para isso, digite o seguinte comando:

php artisan breeze:install 

O próximo passo é executar os comandos para baixar as dependências JS que, no caso do Breeze, usa o TailwindCSS para estilizar as páginas. Vejamos:

#baixa as dependências JS
npm install

#gera os arquivos CSS e JS otimizados
npm run dev

O comando npm run dev irá iniciar um servidor NPM. Basta fechá-lo.

Agora precisamos executar o servidor para verificar se realmente deu certo. Execute o seguinte comando:

php artisan serve

Passo 4 – Testando

Ao visitar o localhost do projeto, é possível notar que a página inicial possui dois links no canto superior direito.

Ao clicar em Register, é possível fazer o cadastro de usuário. Note que no primeiro cadastro o login é realizado automaticamente.

Interfaces de cadastro de usuário e login

Uma vez logado, o usuário é direcionado ao dashboard, que é o ponto inicial da aplicação.

Dashboard da aplicação

Passo 5 – Compreendendo os elementos do Breeze

Como dito anteriormente, o comando php artisan breeze:install criou a estrutura necessária para o login. Logo, foram criadas diversas views e diversos controllers. Navegue até a pasta app\Http\Controllers e veja o conteúdo da pasta Auth:

Controllers criados pelo Breeze

Agora abra a pasta resources\views e veja o conteúdo das pastas auth e profile.

Views criadas pelo Breeze

Note que o arquivo de rotas, routes\web.php, foi modificado, sendo adicionadas as rotas para o login:

Arquivo de rotas routes/web.php

Note que as rotas estão devidamente protegidas (ou filtradas) por middlewares. Por exemplo, a rota /dashboard retorna a view dashboard, mas, antes, passa pelos middlewares auth (usuário precisa estar autenticado) e verified (usuário precisa ser verificado – no padrão do Breeze todos os usuários cadastrados já estão verificados).

Lembrando que para verificar todas as rotas definidas use o seguinte comando artisan:

php artisan route:list
Listando as rotas do projeto

ATENÇÃO! Caso você tenha criado o login em um projeto existente, é possível que o Breeze tenha sobrescrito por completo o arquivo web.php. Assim, será necessário redefinir as rotas que já existiam antes do Breeze.

É interessante deixar a view dashboard como a página inicial da sua aplicação. Assim, é necessário personalizá-la de acordo com seus estilos.

Passo 6 – Protegendo rotas e controladores com o middleware auth

Uma vez que o usuário ainda não esteja autenticado, é necessário impedir que ele navegue por determinadas rotas. Para isso, podemos usar o middleware auth, que filtra a requisição antes de atendê-la.

Assim, quando o usuário requisitar uma rota, caso ele não esteja logado, o middleware auth irá redirecioná-lo até a interface de usuário do login.

Para proteger uma rota no arquivo de rotas, basta seguir o exemplo padrão do Breeze. Por exemplo, imagine que há uma rota /products que requisita ao controlador ProductsController a página de index deste recurso.

Para fazer com que o usuário acesse a página de produtos somente se estiver logado, podemos fazer de duas maneiras:

  • Proteger a rota /products diretamente no arquivo de rotas;
  • Proteger o controlador no seu método construtor.

Vejamos os exemplos:

Route::get("/products")->middleware("auth");
public function __construct(){
    $this->middleware('auth')
}

Conclusão

O Laravel Breeze é uma maneira simples e rápida para criar uma estrutura de login.

Os estilos são baseados no TailwindCSS, mas podem ser substituídos por outro framework, como o Bootstrap.

Duas coisas que eu não citei no post, mas são bem interessantes:

  • Personalizar os campos da tabela de usuário, modificando o cadastro;
  • Sistema de recuperação de senha e exclusão de contas

Sim, o Breeze suporta esses e outros recursos! Explore o código!

Até o próximo post! 👊😎

Jorge Luís Gregório

Jorge Luís Gregório

Professor e entusiasta de tecnologia, estudioso da cultura NERD e fã de quadrinhos, animes e games. Mais um pai de menino, casado com a mulher mais linda da galáxia e cristão convicto. Gosto de ler ficção científica e discutir tecnologia, filmes, seriados, teologia, filosofia e política. Quer falar sobre esses e diversos outros assuntos? Venha comigo!