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.

Optimizar la lógica de visualización con directivas de autorización de Blade en Laravel

#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.

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

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