使用PHP和MySQL构建用户权限设置的矩阵式网格

时间:2015-04-24 19:02:34

标签: php mysql permissions acl

我的任务是为我的工作添加链接/菜单信息中心。它需要具有用户权限才能按用户查看/不查看每个链接记录。

大部分时间都是通过用户组完成的,我需要按用户为每个链接执行此操作。

我已经开始使用中间数据库表来加入userslinks,并且如果允许他们查看每个链接,则保留用户权限。我将在下面展示数据库设计。

我需要帮助的是构建一个表/网格,为每个菜单链接上的每个用户设置权限。

我想这样做,如下图所示......

View full size image enter image description here

所以我需要从数据库和数据库中的链接以及权限记录中提取用户。

在垂直列中为用户构建网格,在水平线中构建链接。

然后权限设置将填入网格空间,我认为最好有一个简单的表单选择字段,用于是/否值。

管理员可以更改每个用户的权限并提交表单,然后需要更新每个权限记录!

这是我的3个演示数据库表的样子......

链接表

CREATE TABLE IF NOT EXISTS `links` (
`id` int(11) NOT NULL,
  `parent` int(11) NOT NULL DEFAULT '0',
  `sort` int(11) NOT NULL DEFAULT '0',
  `text` char(32) COLLATE utf8_bin NOT NULL,
  `link` text COLLATE utf8_bin NOT NULL,
  `permission` int(11) NOT NULL DEFAULT '0'
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

用户表

CREATE TABLE IF NOT EXISTS `user` (
  `id` int(11) NOT NULL DEFAULT '0',
  `name` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT 'user',
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

**权限表:user_link_permissions **

CREATE TABLE IF NOT EXISTS `user_link_permissions` (
`id` int(100) NOT NULL,
  `user_id` int(30) NOT NULL,
  `link_id` int(30) NOT NULL,
  `permission` int(2) NOT NULL DEFAULT '0'
) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=latin1;

我需要帮助的地方......

我不确定如何最好地生成用户,链接和权限网格。

以及如何在后端处理提交所有数据以保存所有设置。

我会发布更多进展,但现在我可以使用某个方向吗?

我意识到我需要查询并获取所有users以及所有links然后全部user_link_permissions,但我不知道如何创建此网格并使其全部与正确的值等对应。

更新:

我刚刚发现这个链接似乎做了类似的东西,看起来像一个很好的参考。它甚至可以用AJAX保存网格值,这可以简化我相信的事情和负载。 http://runastartup.com/how-to-update-a-mysql-field-in-a-multi-table-matrix/

0 个答案:

没有答案