Foxtable(狐表)用户栏目专家坐堂 → [求助]用户权限管理


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

主题:[求助]用户权限管理

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


加好友 发短信
等级:小狐 帖子:307 积分:2436 威望:0 精华:0 注册:2019/7/19 13:09:00
[求助]用户权限管理  发帖心情 Post By:2019/8/23 16:48:00 [只看该作者]

研究了很久,没弄明白目录树式的权限要如何
图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看
使用,请指点下

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


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/23 17:12:00 [只看该作者]

请提出具体问题,帮助哪一个步骤不明白

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


加好友 发短信
等级:小狐 帖子:307 积分:2436 威望:0 精华:0 注册:2019/7/19 13:09:00
[求助]用户权限管理  发帖心情 Post By:2019/8/23 17:57:00 [只看该作者]

我做了这张表,但是不知道要怎么引用这个权限管理,比如对表的管理应该怎么做?

分组和权限要在哪里设置才能使用?

对应下单表要怎么设置?设置哪里?
图片点击可在新窗口打开查看此主题相关图片如下:5.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/23 20:17:00 [只看该作者]

请把帮助看完:http://www.foxtable.com/webhelp/topics/2405.htm,第4、5点就是说明怎么使用的

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


加好友 发短信
等级:小狐 帖子:307 积分:2436 威望:0 精华:0 注册:2019/7/19 13:09:00
[求助]用户权限管理  发帖心情 Post By:2019/8/24 10:58:00 [只看该作者]

可以帮忙解释下这个分组和权限究竟代表什么 吗?是指表还是指
图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看
什么呢?愚笨看不明白

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


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/24 11:13:00 [只看该作者]

分组可以指表,也可以指窗口。权限就是对这个分组可以拥有的操作,比如:新增,修改,删除等等。如分组果是窗口,权限也可以指某个按钮,比打印按钮。

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


加好友 发短信
等级:小狐 帖子:307 积分:2436 威望:0 精华:0 注册:2019/7/19 13:09:00
[求助]用户权限管理  发帖心情 Post By:2019/8/24 12:26:00 [只看该作者]

实在不好意思,我还是想问下分组和权限的设置在代码里没看到明显指向哪个表和哪个操作,我要怎么配置呢,是在代码里的什么地方?

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim
 trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
trv1.BuildTree(
"授权","分组|权限")
For
 Each u As UserInfo In Users
    If
 u.Type = UserTypeEnum.User Then
        If
 trv2.Nodes.Contains(u.Group) = False Then
            trv2.Nodes.Add(u.Group)

        End
 If
        trv2.Nodes(u.Group).Nodes.Add(u.Name)

    End
 If
Next

Trv1.Nodes(
0
).Expand()
trv2.ExpandAll()

左边目录树的AfterSelectNode事件代码:

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim
 trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim
 dr As DataRow
If
 e.node.Level = 0 Then
    dr = 
DataTables("授权").Find("分组 = '" & e.Node.Name & "' And 权限 Is Null")
Else

    dr = 
DataTables("授权").Find("分组 = '" & e.Node.ParentNode.Name & "' And 权限 = '" & e.Node.Name & "'")
End
 If
Dim
 nms As New List(of String)
If
 dr IsNot Nothing AndAlso dr.IsNull("用户") = False
    nms.AddRange(dr(
"用户").Split(","))
End
 If
For
 Each nd As WinForm.TreeNode In trv2.AllNodes
    nd.Checked = nms.Contains(nd.Name)

Next

左边目录树的AfterEditNode事件代码:

If e.NewText = "" Then
    e.Cancel = 
True
ElseIf
 e.Node.Level = 0 Then '重命名分组
    
Dim dt As DataTable = DataTables("授权")
    Dim
 dr As DataRow
    dr = dt.Find(
"分组 = '" & e.NewText & "' And 权限 Is Null" ) '判断新输入的分组是否存在
    
If dr IsNot Nothing '如果存在,取消输入.
        MessageBox.Show(
"此分组已经存在!""提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
        e.cancel = 
True
    Else
        For
 Each dr In dt.Select("分组 = '" & e.Node.Name & "'" ) '重命名分组
            dr(
"分组") = e.NewText
        Next

        e.Node.Name = e.NewText 
'使得节点的名称和标题保持一致.
    
End If
ElseIf
 e.Node.Level = 1 '重命名权限
    
Dim dt As DataTable = DataTables("授权")
    Dim
 dr As DataRow
    
Dim fz As String = e.Node.ParentNode.Name '获得分组名
    dr = dt.Find(
"分组 = '" & fz & "' And 权限 = '" & e.NewText & "'" ) '判断新输入的权限是否存在
    
If dr IsNot Nothing '如果存在,取消输入.
        MessageBox.Show(
"此权限已经存在!""提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
        e.Cancel = 
True
    Else

        dr = dt.Find(
"分组 = '" & fz & "' And 权限 = '" & e.Node.Name & "'" ) '找出对应的行
        dr(
"权限") = e.NewText '重命名权限
        e.Node.Name = e.NewText 
'使得节点的名称和标题保持一致.        
    
End If
End
 If

右边目录树的AfterCheckNode事件:

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim 
trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim 
nd1 As WinForm.TreeNode = trv1.SelectedNode
Dim 
dr As DataRow
If 
e.Node.ParentNode IsNot Nothing Then '取消父节点的选中标记,因为选中子节点,就不要选中父节点了
    
e.Node.ParentNode.Checked = False
End If
For Each 
cnd As WinForm.TreeNode In e.Node.Nodes '取消子节点的选中标记,因为选中父节点,就不要选中子节点了
    
cnd.Checked = False
Next
If 
nd1.Level = 0 Then
    
dr = DataTables("授权").Find("分组 = '" & nd1.Name & "' And 权限 Is Null")
Else
    
dr = DataTables("授权").Find("分组 = '" & nd1.ParentNode.Name & "' And 权限 = '" & nd1.Name & "'")
End If
If 
dr IsNot Nothing Then
    Dim 
nms As String
    For Each 
nd2 As WinForm.TreeNode In trv2.AllNodes
        If 
nd2.Checked  Then
            
nms  = nms & "," &  nd2.Name
        End If
    Next
    If 
nms > "" Then
        
dr("用户") = nms.Trim(",")
    Else
        
dr("用户") = Nothing
    End If
End If

增加分类按钮的代码:

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim
 i As Integer
trv.
Select()
Do

    i = i+ 
1
    
Dim nm As String = "分组" & i
    If
 trv.Nodes.Contains(nm) = False
        Dim
 dr As DataRow = DataTables("授权").AddNew
        Dim
 nd As WinForm.TreeNode = trv.Nodes.Add(nm)
        dr(
"分组") = nm
        trv.SelectedNode = nd
        trv.BeginEdit

        Exit
 Do
    End
 
If
Loop

增加权限按钮的代码:

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim
 pd As WinForm.TreeNode = trv.SelectedNode
trv.
Select()
If
 pd.Level = 1 Then
    pd = pd.ParentNode

End
 If
Dim
 i As Integer
Do

    i = i+ 
1
    
Dim nm As String = "权限" & i
    If
 pd.Nodes.Contains(nm) = False
        Dim
 nd As WinForm.TreeNode = pd.Nodes.Add(nm)
        Dim
 dr As DataRow = DataTables("授权").AddNew()
        dr(
"分组") = pd.name
        dr(
"权限") = nm
        trv.SelectedNode = nd
        trv.BeginEdit

        Exit
 Do
    End
 If
Loop

删除按钮的代码:

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim
 nd As WinForm.TreeNode = trv.SelectedNode
trv.
Select()
If
 nd Is Nothing Then
    Return
End
 If
If
 nd.Level = 0 Then '删除分组
    
Dim dt As DataTable = DataTables("授权")
    If
 MessageBox.Show("确定要删除此分组码?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
        For
 Each dr As DataRow In dt.Select("分组 = '" & nd.Name & "'" )
            dr.Delete

        Next

        nd.Delete

    End
 If
ElseIf
 nd.Level = 1 '删除权限
    
Dim dt As DataTable = DataTables("授权")
    Dim
 dr As DataRow
    
Dim fz As String = nd.ParentNode.Name '获得分组名
    dr = dt.Find(
"分组 = '" & fz & "' And 权限 = '" & nd.Name & "'" ) '找出对应的行
    dr.Delete
    nd.Delete

End
 If

4、增加一个自定义函数,函数名为ShouQuan,代码为:

If User.Type <> UserTypeEnum.User Then ' 如果是开发者或者管理员
    
Return True '则具备所有权限
End
 If
Dim
 dt As DataTable = DataTables("授权")
Dim
 dr As DataRow
'首先判断分组的授权用户是否包括此用户或此用户所属的分组

dr = dt.Find(
"分组 = '" & args(0) & "' And 权限 Is Null" )
If
 dr Is Nothing Then
    MessageBox.show(
"不存在名为""" & args(0) & "分组!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
 False
End
 If
If
 dr.IsNull("用户") = False Then
    Dim
 nms() As String = dr("用户").Split(",")
    For
 Each nm As String In nms
        If
 nm = User.Group OrElse nm = User.Name Then '如果授权用户包括登录用户所属的分组或其用户名
            
Return True '返回True
        
End If
    Next
End
 If
'然后判断权限的授权用户是否包括此用户或此用户所属的分组

If
 Args(1) = "" Then
    Return
 False
End
 If
dr = dt.Find(
"分组 = '" & args(0) & "' And 权限 = '" & args(1) & "'")
If
 dr Is Nothing Then
    MessageBox.show(
"不存在名为""" & args(1) & "权限!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
 False
End
 If
If
 dr.IsNull("用户") = False Then
    Dim
 nms() As String = dr("用户").Split(",")
    
For Each nm As String In nms
        If
 nm = User.Group OrElse nm = User.Name Then '如果授权用户包括登录用户所属的分组或其用户名
            
Return True '返回True
        
End If

    Next
End If
Return False


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


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/24 14:33:00 [只看该作者]

有一个专门的授权表,就是5楼截图的这个表,需要先手工在这个表输入哪些表,需要做什么功能授权。

或者我们先不管帮助的用法,直接说您需要做什么功能?

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


加好友 发短信
等级:小狐 帖子:307 积分:2436 威望:0 精华:0 注册:2019/7/19 13:09:00
  发帖心情 Post By:2019/8/25 17:21:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理.table

我想把分组做为表管理,权限做成列管理,要如何设置?
图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/25 20:19:00 [只看该作者]

那就分组填写表名“a”,权限填写列名“第一列”这种就可以了


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


 回到顶部
总数 13 1 2 下一页