以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教狐爸们,关于使用角色进行可视化授权的问题? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=32769) |
-- 作者:wengfuyy -- 发布时间:2013/5/8 0:09:00 -- 请教狐爸们,关于使用角色进行可视化授权的问题? 今天看到了帮助里关于可视化授权的例子,感觉太高兴了,正当我准备造成我的程序时,发现我是使用角色作为授权的,我感觉大多数的软件都应该是用角色作授权,而用组作为部门和单位。 所以想请狐爸们帮忙改造一下下面的代码,改成用角色来授权的。先谢谢了。 Tables("授权表").Visible =
(User.Type <> UserTypeEnum.User )
If User.Type = UserTypeEnum.User Then For Each dr As DataRow In DataTables("授权表").Select("分组名 = \'" & User.Group & "\'" ) If dr.IsNull("列名") Then Tables(dr("表名")).Visible = Not dr("不可见") Tables(dr("表名")).AllowEdit = Not dr("不可编辑") Else Tables(dr("表名")).Cols(dr("列名")).Visible = Not dr("不可见") Tables(dr("表名")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑") End If Next End If |
-- 作者:Bin -- 发布时间:2013/5/8 8:40:00 -- 参考这里做吧 http://www.foxtable.com/help/topics/2346.htm |
-- 作者:wengfuyy -- 发布时间:2013/5/8 12:43:00 -- 谢谢回复。帮助我已经看过多遍了,感觉用角色授权还是要复杂些,但应用范围更广。凭我目前的水平还写不出来,所以想请老师帮忙。最好是作者能写出来加入到帮助文档里。 |
-- 作者:Bin -- 发布时间:2013/5/8 14:19:00 -- 没有什么区别,也没有复杂一些. dim strs as string()=User.Roles.split(",") dim rs as string for each s as string in strs rs=rs & ",\'" & s & "\'" next Tables("授权表").Visible = (User.Type <> UserTypeEnum.User )
If User.Type = UserTypeEnum.User Then For Each dr As DataRow In DataTables("授权表").Select("分组名 in (" & rs & ")" ) If dr.IsNull("列名") Then Tables(dr("表名")).Visible = Not dr("不可见") Tables(dr("表名")).AllowEdit = Not dr("不可编辑") Else Tables(dr("表名")).Cols(dr("列名")).Visible = Not dr("不可见") Tables(dr("表名")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑") End If Next End If |
-- 作者:wengfuyy -- 发布时间:2013/5/8 23:12:00 -- 谢谢BIN老师! 感觉你编程的水平非常高,特别是像这种写法——User.Roles.split(","),值得我好好学习。但我有还有疑问: 对于一个人同时属于两个(或以上)角色的情况,权限的叠加后,与原来代码要反映的情况是有很大差别的,还是拿帮助中王五的例子来说吧: 但是,如果我们换成角色,如下图 此主题相关图片如下:f07.png 假设还是王五,同时属于角色一和角色二。根据分析,我认为综合后的权限是:王五对表A具有全部权限,即既可见,又可编辑。这显然与上面的情况不同,所以不能用相同的代码来实现。 如果我以上的分析没有错的话,希望BIN老师能继续修完善下代码。相信凭你的水平,要做好是没问题的。听说易表里是有可视化授权的,但不知知道有没有针对角色的功能。如果做好了,我希望能放到帮助文件里,使之能够惠及更多的学员。 谢谢!
[此贴子已经被作者于2013-5-8 23:21:06编辑过]
|
-- 作者:zerov -- 发布时间:2013/5/9 7:19:00 -- 同求,例如分组中有“总部、北京分公司、天津分公司”,角色中有总经理、经理、主管、员工,如果实现登录用户如果是总部员工,则可见所有表的所有行,如果是北京分公司的员工,则只可见所有表的北京分公司的数据,如果实现? |
-- 作者:wengfuyy -- 发布时间:2013/5/9 8:57:00 -- 请问有没有用过易表的朋友?易表的可视授权能处理角色吗?如果能,借用过来不就行了吗? |
-- 作者:wengfuyy -- 发布时间:2013/5/9 9:03:00 -- 以下是引用zerov在2013-5-9 7:19:00的发言: 同求,例如分组中有“总部、北京分公司、天津分公司”,角色中有总经理、经理、主管、员工,如果实现登录用户如果是总部员工,则可见所有表的所有行,如果是北京分公司的员工,则只可见所有表的北京分公司的数据,如果实现? 你这个问题跟我的不是一回事,要简单多了。你的是针对“行”的授权,很容易实现,从这里开始学习吧:http://www.foxtable.com/help/topics/2247.htm
|
-- 作者:Bin -- 发布时间:2013/5/9 9:06:00 -- 你测试过了吗?真的不行吗?我看了一下代码,效用完全一样的啊. |
-- 作者:Bin -- 发布时间:2013/5/9 9:12:00 -- 刚测试了一下代码.完全没问题. 注意这里要 in (" & rs.trim(",") & ")" ) 去掉第一个逗号.
|