Aula 09 - Autenticação e Autorização 🔐
🎯 Objetivo da Aula
Aprender a proteger sua aplicação utilizando os sistemas de autenticação nativos do Laravel. Vamos explorar o Laravel Breeze para um setup rápido e entender a diferença entre Autenticação (quem você é) e Autorização (o que você pode fazer).
🚪 Autenticação: Laravel Breeze
O Laravel não reinventa a roda. Ele fornece "scaffoldings" prontos que já vêm com login, registro, recuperação de senha e verificação de e-mail.
Instalando o Breeze
📊 Fluxo de Autenticação
sequenceDiagram
participant U as Usuário
participant L as Página Login
participant B as Backend (Auth)
participant D as Banco de Dados
U->>L: Digita e-mail/senha
L->>B: Envia requisição POST
B->>D: Verifica credenciais
D-->>B: Credenciais Corretas
B-->>U: Inicia Sessão e Redireciona
🛡️ Autorização: Gates e Policies
Depois que o usuário está logado, precisamos saber se ele tem permissão para realizar certas ações.
- Gates: São úteis para ações simples que não estão ligadas a um model específico.
- Policies: São classes que organizam a lógica de autorização para um model específico (ex: PostPolicy).
Exemplo de Policy
public function update(User $user, Post $post)
{
// Apenas o dono do post pode editá-lo
return $user->id === $post->user_id;
}
🚦 RBAC (Role-Based Access Control)
O controle de acesso baseado em funções permite que você defina perfis como "Admin", "Editor" e "Usuário Comercial", garantindo permissões granulares.
Dica de Segurança
Use o middleware can:update,post nas suas rotas para aplicar as policies automaticamente.
🧠 Blocos de Destaque
Confirmação de Senha
O Laravel possui um middleware chamado password.confirm que exige que o usuário digite a senha novamente antes de acessar áreas sensíveis do sistema.
🛠️ Exercícios Progressivos
- Básico: Instale o Laravel Breeze em um projeto limpo e crie um usuário de teste.
- Intermediário: Proteja uma rota de
/dashboardpara que apenas usuários logados possam entrar. - Desafio: Crie um Gate chamado
admin-onlyque permita o acesso apenas se o e-mail do usuário terminar em@admin.com.
🚀 Mini-Projeto da Aula
Sistema de Blog Protegido: Implemente um sistema onde todos podem ler os posts, mas apenas usuários autenticados podem comentar. Além disso, garanta que um usuário só possa excluir o seu próprio comentário através de uma Policy.