Foxtable(狐表)用户栏目专家坐堂 → 狐爸请看帮助的目录树形式授权的问题


  共有9439人关注过本帖树形打印复制链接

主题:狐爸请看帮助的目录树形式授权的问题

帅哥哟,离线,有人找我吗?
红叶
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:357 积分:2895 威望:0 精华:0 注册:2008/9/1 14:05:00
狐爸请看帮助的目录树形式授权的问题  发帖心情 Post By: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

 

 


此主题相关图片如下:qq截图20120228155625.jpg
按此在新窗口浏览图片

假如以图中第三行为例:当前用户为杨刚

执行:

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) 互相为空或不为空的问题,请狐爸指正!


 


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/2/28 16:27:00 [只看该作者]

因为授权表的第一行已经说明:经理和杨刚具备所有订单管理的权限,当然也包括批准订单。

这样很方便,如果一个人具备某个分组的所有权限,就只需针对这个分组设置即可,无需对这个分组下的权限一个一个设置。

 

[此贴子已经被作者于2012-2-28 16:27:34编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
红叶
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:357 积分:2895 威望:0 精华:0 注册:2008/9/1 14:05:00
  发帖心情 Post By:2012/2/28 16:54:00 [只看该作者]

明白了,谢谢

 回到顶部