【问题标题】:Cartalyst\Sentinel getting all Users with resulting permissionsCartalyst\Sentinel 让所有用户获得相应的权限
【发布时间】:2022-01-11 11:07:39
【问题描述】:

出于用户管理用户界面的目的,我希望所有用户都获得相应的权限。我使用 Cartalyst\Sentinel 的本机实现并尝试过:

$users = Sentinel::getUserRepository()->with('roles')->get();
    $permissions = array();
    foreach ($users as $user) {
        $user_permissions = Sentinel::getResultingPermissionsFor($user);
        $permissions[$user['id']] = $user_permissions;
    }

但函数“getResultingPermissionsFor()”在 V5 中似乎不再可用。

【问题讨论】:

    标签: php cartalyst-sentinel


    【解决方案1】:

    我通过将角色对象传递给树枝模板解决了这个问题:

    路由器.php

    $app->get('/admin/users', function (Request $request, Response $response) {
        $loggedUser = Sentinel::check();
        $users = Sentinel::getUserRepository()->with('roles')->get();
        $roles = Sentinel::getRoleRepository()->get();
    
        if (!$loggedUser) {
            // do sth.
        }
    
        if (!$loggedUser->hasAccess('user.*')) {
            // do sth.
        }
    
        $view = Twig::fromRequest($request);
        $view->render($response, 'admin.users.html.twig', array(
            'loggedUser' => $loggedUser,
            'users' => $users,
            'roles' => $roles
        ));
        return $response;
    });
    

    树枝模板:

    {% for user in users %}
       {% set rolePermissions = [] %}
          {% for role in user.roles %}
             {% set rolePermissions = rolePermissions|merge(role.permissions) %}
          {% endfor %}
       {% set resultingPermissions = rolePermissions %}
       {% set resultingPermissions = resultingPermissions|merge(user.permissions) %}
    {% endfor %}
    
    // followed by output html
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      • 2016-01-21
      • 2017-04-03
      相关资源
      最近更新 更多