我希望某些菜单选项仅对某些用户可见。
我通过添加两个角色 - 布尔列:isTeacher
和isOnCommittee
来修改标准auth框架中的用户表。
我以为我会尝试
将@if (Auth::iSTeacher())
置于我的视野中一切顺利,但我在哪里放置我的功能?
我在所有文件中搜索guest()
并找到了此
...\vendor\laravel\framework\src\Illuminate\Contracts\Auth\Guard.php:
public function guest();
/**
* Get the currently authenticated user.
*
* @return \Illuminate\Contracts\Auth\Authenticatable|null
*/
我明白守卫的目的是保护路线,所以这不是它的地方。
我应该在哪里创建我的功能?
(如果你没有猜到 - 我对laravel很新。
答案 0 :(得分:2)
我首选的方法是通过Gate Facade进行授权。您可以在AuthServiceProvider中定义所谓的“能力”,如下所示:
SubclassOfString[]
您可以查看内部视图:
public function boot(GateContract $gate)
{
$this->registerPolicies($gate);
$gate->define('update-post', function ($user, $post) {
return $user->id === $post->user_id;
});
}
来源: https://laravel.com/docs/5.2/authorization#within-blade-templates
答案 1 :(得分:0)
您可以在用户模型中使用Query Scopes功能。例如在isTeacher()
模型中编写User
并在视图中检查
@if(Auth::user()->isTeacher)
YOUR CODE HERE
@end if