php 根据用户角色控制数据显示,根据用户职级关系展示数据如何设计更合理?...

数据库的表设计:

节点 或叫 权限名(节点编号, 节点名)

(1, '客户管理')

权限 或叫 权限值(权限编号, 权限值, 节点编号, 说明)

(1, '/admin/customer_list.php', 1, '访问客户管理节点')

(2, 'p_admin_customer_list_self', 1, '查看自己的客户信息')

(3, 'p_admin_customer_list_shop', 1, '查看店面的客户信息')

(4, 'p_admin_customer_list_brand', 1, '查看品牌的客户信息')

(5, 'p_admin_customer_list_all', 1, '查看所有的客户信息')

角色(角色编号, 角色值)

(1, '销售员')

(2, '店长')

(3, '品牌经理')

角色和权限关系表(角色编号, 权限编号)

(1, 1) 销售 能够 访问客户管理节点

(1, 2) 销售 能够 查看自己的客户信息

(2, 1) 店长 能够 访问客户管理节点

(2, 3) 店长 能够 查看店面的客户信息

(3, 1) 经理 能够 访问客户管理节点

(3, 4) 经理 能够 查看品牌的客户信息

客户表(客户编号, 客户所属销售员的编号)

销售员表(销售员编号, 销售员所属店面编号)

店长表(店长编号, 店长所属店面编号)

店面表(店面编号, 店面所属品牌编号)

品牌经理表(经理编号, 经理所属品牌编号)

权限判断和显示逻辑:

//$app['user']['rbac']['perm']保存的是当前用户具有的所有权限

//客户管理节点的链接

$app['customer_list_link'] = array();

if(in_array('p_admin_customer_list_self', $app['user']['rbac']['perm'], true))

$app['customer_list_link'][] = '/admin/customer_list.php?section=self';

if(in_array('p_admin_customer_list_shop', $app['user']['rbac']['perm'], true))

$app['customer_list_link'][] = '/admin/customer_list.php?section=shop';

if(in_array('p_admin_customer_list_brand', $app['user']['rbac']['perm'], true))

$app['customer_list_link'][] = '/admin/customer_list.php?section=brand';

//客户管理节点的数据列表

$app['customer_list'] = array();

$app['customer_list'] = app_customer_list();

echo app_render('customer_list.php', 'admin');

function app_customer_list() {

global $app;

if(!isset($_GET['section'])) return false;

switch($_GET['section']) {

case 'self':

if(!in_array('p_admin_customer_list_self', $app['user']['rbac']['perm'], true)) return false;

//根据销售员编号查询客户信息

$sql = 'select * from customer where 销售员编号 = 1024 order by id desc limit 10 offset 0';

break;

case 'shop':

if(!in_array('p_admin_customer_list_shop', $app['user']['rbac']['perm'], true)) return false;

//查出店长管理的店面下的所有销售员的编号

$sql = 'select * from customer where 销售员编号 in (销售员编号集合) order by id desc limit 10 offset 0';

break;

case 'brand':

if(!in_array('p_admin_customer_list_brand', $app['user']['rbac']['perm'], true)) return false;

//查出经理管理的品牌的所有店面下的所有销售员的编号

$sql = 'select * from customer where 销售员编号 in (销售员编号集合) order by id desc limit 10 offset 0';

break;

default:

return false;

}

$db = app_db();

return $db->query($sql)->fetchAll(PDO::FETCH_ASSOC);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值