0Pricing
PHP Academy · Aula

Gates: verificações simples de autorização

Defina e avalie gates para a lógica de permissões de ações do usuário.

Gates: verificações simples de autorização é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.

O que são Gates?

Os Gates do Laravel são funções anônimas que determinam se um usuário está autorizado a executar determinada ação. São verificações de autorização simples e globais, não vinculadas a um modelo específico.

Definindo um Gate

Defina Gates em App\Providers\AppServiceProvider ou em um AuthServiceProvider dedicado, usando a fachada Gate.

<?php
use Illuminate\Support\Facades\Gate;

// In a service provider's boot() method:
Gate::define("delete-post", function (User $user, Post $post) {
    return $user->id === $post->user_id;
});

Verificando um Gate (permite/nega)

Verifique os resultados de um Gate com Gate::allows() ou Gate::denies().

<?php
if (Gate::allows("delete-post", $post)) {
    $post->delete();
}

if (Gate::denies("delete-post", $post)) {
    abort(403);
}

authorize() em controladores

Chame $this->authorize() dentro de um controlador — em caso de falha, ele lança automaticamente AuthorizationException (403).

<?php
public function destroy(Post $post): RedirectResponse
{
    $this->authorize("delete-post", $post);
    $post->delete();
    return redirect()->route("posts.index");
}

@can no Blade

Use a diretiva @can para exibir condicionalmente a interface com base nas verificações do Gate.

@can('delete-post', $post)
    <form method="POST" action="/posts/{{ $post->id }}">
        @csrf @method('DELETE')
        <button>Delete</button>
    </form>
@endcan

Gate::before

O retorno de chamada before é executado antes de todas as outras verificações do Gate — útil para conceder acesso irrestrito aos administradores.

<?php
Gate::before(function (User $user, string $ability) {
    if ($user->isAdmin()) return true; // skip further checks
});

Gate::after

after é executado depois de todas as verificações do Gate. Um valor de retorno diferente de nulo substitui o resultado do Gate.

Retornando respostas

Os Gates podem retornar um objeto Response para exibir mensagens de erro personalizadas.

<?php
Gate::define("publish-post", function (User $user, Post $post) {
    return $user->isEditor()
        ? Response::allow()
        : Response::deny("You must be an editor to publish.");
});

forUser()

Verifique um Gate para um usuário diferente (não o usuário autenticado).

<?php
if (Gate::forUser($otherUser)->allows("delete-post", $post)) {
    // ...
}

Usuários convidados

Por padrão, os Gates retornam automaticamente false para usuários não autenticados. Declare o tipo do usuário como anulável para permitir verificações de convidados.

<?php
Gate::define("view-post", function (?User $user, Post $post) {
    return $post->is_published || $user?->id === $post->user_id;
});

Gates e políticas

Gates são funções anônimas simples para verificações pontuais. Políticas são classes para autorização baseada em modelos — use políticas quando houver várias ações para o mesmo modelo.

Resumo

Gates são funções anônimas globais de autorização. Defina-os em um provedor de serviços. Verifique-os com Gate::allows(), $this->authorize() ou @can no Blade.

Verificação rápida

Qual método do controlador lança automaticamente 403 quando um Gate falha?

Perguntas Frequentes

A aula “Gates: verificações simples de autorização” é grátis?

Sim — o texto completo de “Gates: verificações simples de autorização” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.

O que vou aprender em “Gates: verificações simples de autorização”?

Defina e avalie gates para a lógica de permissões de ações do usuário. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar PHP Academy?

Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Gates: verificações simples de autorização”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de PHP Academy?

Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Autenticação com Laravel Breeze
  2. Proteção de rotas com middleware
  3. Gates: verificações simples de autorização
  4. Políticas: autorização baseada em modelos
← Voltar para PHP Academy