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>
@endcanGate::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
- Autenticação com Laravel Breeze
- Proteção de rotas com middleware
- Gates: verificações simples de autorização
- Políticas: autorização baseada em modelos