сеанс пользователя A получает сеанс пользователя B laravel 5.6 - PullRequest
0 голосов
/ 26 октября 2018

Пользователь 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();
}

1 Ответ

0 голосов
/ 26 октября 2018

Есть несколько способов решить эту проблему, один из них - сделать Middleware в Laravel. https://laravel.com/docs/5.7/middleware#defining-middleware

Другой способ создания Policies и Gates https://laravel.com/docs/5.7/authorization#gates

В вашем случае, middleware может решить.

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