Laratrust的菜单过滤器权限

时间:2016-09-29 10:19:50

标签: php laravel authentication laravel-5 authorization

我正在使用AdminLTE,Lara Entrust创建了一个MyMenu Filter.php文件,根据权限菜单过滤我的选项。

adminlte.php

'menu' => [
    'MAIN NAVIGATION',
    [
        'text' => 'Blog',
        'url'  => 'admin/blog',
        'permission'  => 'create-post',
    ],
    // CODE...
 ],

'filters' => [
    // CODE...
    App\MyMenuFilter::class,
],

MyMenuFilter.php

<?php

namespace App;

use JeroenNoten\LaravelAdminLte\Menu\Builder;
use JeroenNoten\LaravelAdminLte\Menu\Filters\FilterInterface;

class MyMenuFilter implements FilterInterface
{
    public function transform($item, Builder $builder)
    {
        if (isset($item['permission']) && \Laratrust::can($item['permission'])) {
            return false;
        }

        return $item;
    }
}

“博客”菜单中的我选项需要create-post权限。但是mymenufilter.php中的“if”会返回false quando ousuáritemapermissão并且不会创建菜单。

但如果我提出了用户没有的许可,则会显示。

1 个答案:

答案 0 :(得分:0)

我认为你刚刚倒退了逻辑。如果用户不能使用该权限,则应返回false。我添加了一个! (不)在下面的if语句中。这应该可以解决您的问题

public function transform($item, Builder $builder)
{
    if (isset($item['permission']) && !\Laratrust::can($item['permission'])) {
        return false;
    }

    return $item;
}