Optimizar la lógica de visualización con directivas de autorización de Blade en Laravel
- Publicado el 08 octubre, 2024
- Palabras: 406
El motor de plantillas Blade de Laravel ofrece directivas potentes para gestionar la autorización directamente en las vistas. Estas directivas llamadas @can, @cannot y @canany, permiten mostrar contenido de forma condicional en función de los permisos de los usuarios, lo que genera plantillas más limpias y seguras.

#Como funcionan las directivas de autorización de Blade
Las directivas de autorización de Blade proporcionan una sintaxis clara para realizar comprobaciones de autorización en las vistas. Funcionan a la perfección con el sistema de autorización de Laravel, incluidas los policies y los gates.
#Las directivas @can y @cannot
Estas directivas le permiten comprobar si un usuario está autorizado para realizar una acción específica:
@can('update', $post)
<a href="{{ route('posts.edit', $post) }}">Edit Post</a>
@elsecan('create', App\Models\Post::class)
<a href="{{ route('posts.create') }}">Create New Post</a>
@else
<p>No permissions to edit or create posts.</p>
@endcan
@cannot('delete', $post)
<p>You can't delete this post.</p>
@endcannot
#La directiva @canany
@canany te permite verificar si el usuario está autorizado a realizar alguna de un conjunto determinado de acciones:
@canany(['update', 'view', 'delete'], $post)
<div class="post-actions">
<!-- Post action buttons -->
</div>
@elsecanany(['create'], \App\Models\Post::class)
<a href="{{ route('posts.create') }}">Create New Post</a>
@endcanany
#Ejemplos prácticos
Mostrar un enlace al panel de administración:
@can('access-admin-panel')
<li><a href="{{ route('admin.dashboard') }}">Admin Panel</a></li>
@endcan
Mostrar botones de edición de forma condicional:
@can('update', $post)
<a href="{{ route('posts.edit', $post) }}" class="btn btn-primary">Edit</a>
@endcan
Administrar múltiples permisos:
@canany(['moderate', 'admin'])
<div class="moderation-tools">
<!-- Moderation tools here -->
</div>
@endcanany
#Uso con Policies
Las directivas de autorización de Blade funcionan perfectamente con las policies de Laravel:
@can('update', $project)
<form action="{{ route('projects.update', $project) }}" method="POST">
@method('PUT')
@csrf
<!-- Form fields -->
<button type="submit">Update Project</button>
</form>
@endcan
#Manejo de usuarios invitados
Para los usuarios invitados, puede utilizar la directiva @guest en combinación con comprobaciones de autorización:
@guest
<a href="{{ route('login') }}">Login to edit posts</a>
@else
@can('edit', $post)
<a href="{{ route('posts.edit', $post) }}">Edit Post</a>
@endcan
@endguest
Al usar directivas de autorización de Blade, puede:
• Mantener sus vistas limpias y legibles
• Asegurarse de que los elementos de la interfaz de usuario confidenciales solo se muestren a los usuarios autorizados
• Mantener la coherencia entre la lógica de autorización del backend y la visualización del frontend
• Reducir el riesgo de exponer acciones a usuarios no autorizados
Estas directivas proporcionan una herramienta poderosa para implementar la autorización a nivel de vista en sus aplicaciones Laravel, lo que mejora tanto la seguridad como la experiencia del usuario.
Fuente: Harris Raftopoulos
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión