Pular para conteúdo

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

$ composer require laravel/breeze --dev
$ php artisan breeze:install blade
$ php artisan migrate
$ npm install && npm run dev

📊 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

  1. Básico: Instale o Laravel Breeze em um projeto limpo e crie um usuário de teste.
  2. Intermediário: Proteja uma rota de /dashboard para que apenas usuários logados possam entrar.
  3. Desafio: Crie um Gate chamado admin-only que 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.


Próxima Aula: APIs REST com Laravel