Laravel @Can Blade Проверка политики - PullRequest
1 голос
/ 26 апреля 2019

Я пишу политику лезвия для выпадающего меню в laravel, используя @ can.

<li>
  <a href="javascript:void(0);" class="menu-toggle"><i class="zmdi zmdi-assignment-o"></i><span>Models</span></a>
  <ul class="ml-menu">
    @can('index',App\Model1::class)
   <li>
      <a href="#">{{__('Model1 Manger')}}</a>
    </li>
    @endcan
    @can('index',App\Model2::class)
    <li>
       <a href="#">{{__('Model2 Manager')}}</a>
    </li>
    @endcan
   </ul>
  </li>

Мой вопрос: как скрыть опцию «Модель» в меню? Если у пользователя нет прав доступа к модели1 и модели2?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

вы должны создать политику для этого. проверьте приведенный ниже код и для получения дополнительной справки проверьте это https://laravel.com/docs/5.8/authorization#generating-policies

<?php

namespace App\Policies;

use App\User;
use App\Post;

class PostPolicy
{
    /**
     * Determine if the given post can be updated by the user.
     *
     * @param  \App\User  $user
     * @param  \App\Post  $post
     * @return bool
     */
    public function update(User $user, Post $post)
    {
        return $user->id === $post->user_id;
    }
}
0 голосов
/ 26 апреля 2019

Вы можете использовать can в выражении if, аналогичном приведенному ниже:

@if (Auth::user()->can('index',App\Model1::class) && Auth::user()->can('index',App\Model2::class))

@endif

Дополнительную информацию можно найти на веб-сайте Laravel по ссылке ниже: https://laravel.com/docs/5.8/authorization#via-blade-templates


Чтобы продолжить мой ответ, возможно, стоит создать отдельный класс для обработки авторизации, а затем вызвать его в блейде:

@if(BlogPermissions('showModal'))

@endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...