首页 > 解决方案 > Codeigniter ion auth 用户管理同时创建一个新用户

问题描述

希望你们一切都好。我有一个小问题。我不是 Codeigniter 方面的专家。我有 5 个用户组,例如 super_admin、admin、reseller、agent 和 general。虽然 super_admin 将创建一个用户,但他可以将所有访问权限授予新用户。但管理员可以给经销商、代理和一般。经销商可以代理和一般,最后代理不能只有一般访问。现在想从没有用户权限的下拉菜单中隐藏那些用户组名称。我的代码如下。我将代码写在一个create_user.php页面中。请帮我。

    <?php                                     
      foreach ($groups as $group):
          $a=$this->ion_auth->get_users_groups()->row()->name;
        if(!in_array($group->name, $a)){
    ?>
    <option value="<?php echo $group['id']; ?>"><?php echo htmlspecialchars($group['description'], ENT_QUOTES, 'UTF-8'); ?></option>
   <?php } endforeach ?>
   </select>  
  </div>
?php endif ?>

标签: codeigniter

解决方案


这是您可以测试的示例。

很少有假设像连续的 id 一样显而易见,那super_admin就是 id 5。

相关ion_auth功能被注释掉。

<?php

$groups = array(
    array(
        'id' => 1,
        'name' => 'general'
    ),
    array(
        'id' => 2,
        'name' => 'agent'
    ),
    array(
        'id' => 3,
        'name' => 'reseller'
    ),
    array(
        'id' => 4,
        'name' => 'admin'
    ),
    array(
        'id' => 5,
        'name' => 'super_admin'
    ),
);

//$groups = $this->ion_auth->groups()->result_array();

array_pop($groups); // remove super_admin (last element) from array

$curr_user_group = 4;

//$curr_user_group = $this->ion_auth->get_users_groups()->row()->id;

$user_create_groups = $curr_user_group - 1;

$groups = array_slice($groups, 0, $user_create_groups);

echo '<pre>';

foreach ($groups as $group) {

    print_r($group);

}

由于一般无法创建一个较低的组,因此该$groups数组将为空白。希望您已经考虑到这一点并有一些系统到位,因此该组的用户无法创建用户。另请注意,您需要在后端建立类似的验证功能,以确保用户不会super_admin通过更改浏览器中的选择框来提升自己或他人。


推荐阅读