根据访问权限显示和隐藏链接

问题描述 投票:0回答:1

我有一个“users”表,它与“page_access_management”表保持一对一的关系。该表包括“emp_create”、“view”、“delete”、“edit”等字段,我将它们的值设置为 1 或 0。我正在使用 Passport 身份验证并将用户的详细信息存储在会话中,但我没有在会话中存储“page_access_management”详细信息。我有一个创建员工的链接:

<a class="nav-link {{ Route::currentRouteName() === 'employee.create' ? 'active' : '' }}" href="{{ route('employee.create') }}">Add Employee</a> 

如果用户无权创建员工,我希望隐藏此链接。

protected function checkPermission($permissionName)
{
    $user_session = session('user');
    $userId = $user_session->id;

    $hasPermission = User::whereHas('pageAccessManagements', function ($query) use ($userId, $permissionName) {
        $query->where('user_id', $userId)->where($permissionName, 1);
    })->exists();

    return $hasPermission;
}

我想用这个功能来防止未经授权的用户访问路由。

laravel authentication relationship anchor user-permissions
1个回答
0
投票

使用刀片文件中的

checkPermission
函数可根据用户的权限有条件地显示链接。

@if(checkPermission('emp_create'))
    <a class="nav-link {{ Route::currentRouteName() === 'employee.create' ? 'active' : '' }}" href="{{ route('employee.create') }}">Add Employee</a> 
@endif
© www.soinside.com 2019 - 2024. All rights reserved.