访问控制列表,用于管理提取的数据库列

Moh*_*han 7 php mysql acl codeigniter

我有一个内置在codeigniter中的站点,我为此设计了一个访问控制列表来管理不同类型用户的权限.登录到站点的各种用户是:

  1. 超级管理员
  2. 管理员
  3. SEO用户
  4. 开发人员

现在我已经完成了访问控制,并且可以通过Super Admin可访问的模块为每个用户分配添加,更新,列表和删除权限.

现在(这是客户新要求的一部分)我想让某些用户可以访问列,例如:

如果表产品有4列

Products : 
id   |  Products | Price | Status
-----+-----------+-------+----------
1    |  prod1    | 20.0  |   1 
2    |  prod2    | 35.6  |   0
Run Code Online (Sandbox Code Playgroud)

现在我希望SEO用户列价在列表中不显示.

注意:这只是一个示例,我需要使这个动态的管理员控制谁拥有哪个列的权限.我不能简单地在我的视图文件中编写If Else逻辑来排除不需要的列.

请告诉我如何在不重新设计整个系统或进行重大更改的情况下完成此操作.

Cor*_*rni 0

这就是您使用 ACL 的原因。ACLS 是一种存储权限的动态方式。我希望你有一个用户模型。在此模型中,您需要读取当前用户的 ACL。您可以为访问级别设置一些常量,类似于 unix chmod。然后构建一个包含所有列和该列的 acl 值的数组。

要构建查询,您可以使用类似的方法

isSeo();
Run Code Online (Sandbox Code Playgroud)

或者

hasAccess($tableName);
Run Code Online (Sandbox Code Playgroud)

当然,这是一个重大更改,但我不知道您希望如何在不更改代码的情况下实现 ACL。