以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 狐爸请看帮助的目录树形式授权的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=16946) |
-- 作者:红叶 -- 发布时间:2012/2/28 16:17:00 -- 狐爸请看帮助的目录树形式授权的问题 4、增加一个自定义函数,函数名为ShouQuan,代码为: 1,If User.Type <> UserTypeEnum.User Then \' 如果是开发者或者管理员2, Return True \'则具备所有权限 3, End If 4, Dim dt As DataTable = DataTables("授权") 5, Dim dr As DataRow \'首先判断分组的授权用户是否包括此用户或此用户所属的分组 6, dr = dt.Find("分组 = \'" & args(0) & "\' And 权限 Is Null" ) 7, If dr Is Nothing Then 8, MessageBox.show("不存在名为""" & args(0) & "分组!","提 示",MessageBoxButtons.OK,MessageBoxIcon.Information) 9, Return False 10, End If 11,If dr.IsNull("用户") = False Then 12, Dim nms() As String = dr("用户").Split(",") 13, For Each nm As String In nms 14, If nm = User.Group OrElse nm = User.Name Then \'如果授权用户包括登录用户所属的分组或其用户名 15, Return True \'返回True 16, End If 17, Next 18,End If \'然后判断权限的授权用户是否包括此用户或此用户所属的分组 19,If Args(1) = "" Then 20, Return False 21,End If 22,dr = dt.Find("分组 = \'" & args(0) & "\' And 权限 = \'" & args(1) & "\'") 23,If dr Is Nothing Then 24, MessageBox.show("不存在名为""" & args(1) & "权限!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) 25, Return False 26,End If 27,If dr.IsNull("用户") = False Then 28, Dim nms() As String = dr("用户").Split(",") 29, For Each nm As String In nms 30, If nm = User.Group OrElse nm = User.Name Then \'如果授权用户包括登录用户所属的分组或其用户名 31, Return True \'返回True 32, End If 33, Next 34,End If 35,Return False
假如以图中第三行为例:当前用户为杨刚 执行: If Functions.Execute("ShouQuan","订单管理","批准订单") Then 应当返回FALSE,但是却返回了TRUE,理由是执行到第6行的 dr = dt.Find("分组 = \'" & args(0) & "\' And 权限 Is Null" ) dr是第一行,然后 第14,15行的 If nm = User.Group OrElse nm = User.Name Then Return True 返回的则是True了,但图中的第三行中没有用户呀,应当返回FALSE
还有就是如果 分组 对应的 权限 的每一行都录入有权限时,始终
MessageBox.show("不存在名为""" & args(0) & "分组!","提 示",MessageBoxButtons.OK,MessageBoxIcon.Information)
以上问题主要还是判断 args(0) 和args(1) 互相为空或不为空的问题,请狐爸指正!
|
-- 作者:狐狸爸爸 -- 发布时间:2012/2/28 16:27:00 -- 因为授权表的第一行已经说明:经理和杨刚具备所有订单管理的权限,当然也包括批准订单。 这样很方便,如果一个人具备某个分组的所有权限,就只需针对这个分组设置即可,无需对这个分组下的权限一个一个设置。
[此贴子已经被作者于2012-2-28 16:27:34编辑过]
|
-- 作者:红叶 -- 发布时间:2012/2/28 16:54:00 -- 明白了,谢谢 |