Пользователь A вошел в систему с ролью «admin». Пользователь B вошел как роль «LimitedUser» на том же веб-портале.
Пользователь A меняет разрешения для использования B. Они оба находятся на одной странице, то есть «Присоединить разрешение к странице роли». Пользователь A запрещает пользователю B доступ к странице, и когда пользователь A отправляет форму, пользователь B обновляет свою страницу и получает сеанс пользователя A. Это происходит только в том случае, если пользователь A отправляет форму и пользователь B перенаправляет страницу одновременно. .
Laravel Версия: 5.6
Доверьте управление ролями
Сессия: на основе файлов
Вот код.
function updatePermissions(Request $request)
{
if (!hasRole('SuperAdmin') && !userCan('attach_permissions')) {
abort('404');
}
$roleId = $request->input('role_id');
$permIds = $request->input('perm');
$role = Role::where('id', '=', $roleId)->first();
if (!$role) {
abort('404');
}
if ($permIds == null) {
$role = Role::findOrFail($roleId);
$role_permissions = $role->perms()->get();
//print_r($role_permissions);exit;
$rolePermIds = array();
foreach ($role_permissions as $permission) {
$rolePermIds[] = $permission->id;
}
$role->perms()->detach($rolePermIds);
} else {
/*$role->perms()->sync(array_keys($permIds));*/
$permissions_new = (array_keys($permIds));
RolePermission::where('role_id', '=', $roleId)->forceDelete();
foreach ($permissions_new as $item) {
$r = new RolePermission();
$r->role_id = $role->id;
$r->permission_id = $item;
$r->save();
}
}
return redirect()->back();
}