【问题标题】:How to make some blade templates can be accessed by 1 user but not by another users如何使一些刀片模板可以由 1 个用户访问,但不能由其他用户访问
【发布时间】:2020-02-29 00:15:15
【问题描述】:

假设我有 9 个刀片模板(p1.blade.php 直到 p9.blade.php)和 3 个用户(member1、member2 和 member3)

member1 can only access p1.blade.php, p2.blade.php, p3.blade.php
member2 can only access p4.blade.php, p5.blade.php, p6.blade.php
member3 can only access p7.blade.php, p8.blade.php, p9.blade.php

我该怎么做?

【问题讨论】:

  • 使用策略和@can 指令

标签: laravel laravel-5 authorization laravel-blade


【解决方案1】:

访问是什么意思?最终由您决定在您的视图中呈现哪些模板。

您可以在@include 之前有选择地使用@can@if 之类的条件,或者使用@includeWhen

Including sub-views

如果您想根据给定的布尔条件 @include 一个视图,您可以使用 @includeWhen 指令:

@includeWhen($boolean, 'view.name', ['some' => 'data'])

例如:

<ul id="menu">
  @includeWhen($user->role == 'Admin', 'menu.admin', ['data' => $data])
  @includeWhen($user->role == 'Moderator', 'menu.moderator', ['data' => $data])
  @includeWhen($user->role == 'User', 'menu.user', ['data' => $data])
</ul>

但检查角色并不是真正的最佳做法。与策略相同的示例

<ul id="menu">
  @includeWhen($user->can('admin'), 'menu.admin', ['data' => $data])
  @includeWhen($user->can('moderate'), 'menu.moderator', ['data' => $data])
  @includeWhen($user->can('post'), 'menu.user', ['data' => $data])
</ul>

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 2017-10-08
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多