Foxtable(狐表)用户栏目专家坐堂 → 请教权限管理问题


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

主题:请教权限管理问题

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


加好友 发短信
等级:小狐 帖子:300 积分:2307 威望:0 精华:0 注册:2012/11/14 11:25:00
请教权限管理问题  发帖心情 Post By:2013/10/9 16:14:00 [只看该作者]

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

我在设计窗口表和表的编辑功能权限时,代码如下:

If User.Type = UserTypeEnum.User Then
    For Each t As Table In Tables
        t.AllowEdit=False
        If t.Name.Contains("_") Then
            t.AllowEdit=False
            Dim ary() As String = t.Name.Split("_")
            Dim fdr As DataRow = DataTables("权限管理").Find("用户名 = '" & UserName & "' and 窗口 = '" & ary(0) & "' and 表名 = '" & ary(1) & "'")
            If fdr IsNot Nothing Then
                t.AllowEdit = fdr("可编辑")
            Else
                t.AllowEdit = False
            End If
        Else
            Dim fdr As DataRow = DataTables("权限管理").Find("用户名 = '" & UserName & "' and 表名 = '" & t.Name & "'")
            If fdr IsNot Nothing Then
                t.AllowEdit = fdr("可编辑")
            End If
        End If
    Next
End If

加上上面红字,全部表不能编辑,去掉红字,全部表都能编辑,请教大师指点如何实现用户对不同表和窗口表的编辑权限设置。


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/10/9 16:17:00 [只看该作者]


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


加好友 发短信
等级:小狐 帖子:300 积分:2307 威望:0 精华:0 注册:2012/11/14 11:25:00
  发帖心情 Post By:2013/10/9 19:48:00 [只看该作者]

想实现张三能够编辑窗口2_Table1、表B、表D,不能编辑窗口1_Table1、表C、表E,经过多次调整还是不能达到目标,请老师指教
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:权限管理.table


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/10/9 20:03:00 [只看该作者]

 如下代码。

If User.Type = UserTypeEnum.Developer Then
    For Each t As Table In Tables
        t.Visible = True
        t.AllowEdit = True
    Next
End If

Forms("窗口1").open
Forms("窗口1").visible=False
Forms("窗口2").open
Forms("窗口2").visible=False

If User.Type = UserTypeEnum.User Then
    For Each t As Table In Tables
        If t.Name.Contains("_") Then
            Dim ary() As String = t.Name.Split("_")
            Dim fdr As DataRow = DataTables("权限管理").Find("用户名 = '" & User.Name & "' and 窗口 = '" & ary(0) & "' and 表名 = '" & ary(1) & "'")
            If fdr IsNot Nothing Then
               t.AllowEdit = fdr("可编辑")
            Else
                t.AllowEdit = False
            End If
        End If
        t.AllowEdit = False
        Dim dr As DataRow = DataTables("权限管理").Find("用户名 = '" & user.Name & "' and 表名 = '" & t.Name & "'")
        If dr IsNot Nothing Then
           t.AllowEdit = dr("可编辑")
        Else
           t.AllowEdit = False
        End If
    Next
End If

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


加好友 发短信
等级:小狐 帖子:300 积分:2307 威望:0 精华:0 注册:2012/11/14 11:25:00
  发帖心情 Post By:2013/10/9 20:40:00 [只看该作者]

执行过程中遇到以下问题麻烦指教:

1、新增用户应该是执行 t.AllowEdit = False,但是新增用户拥有全部编辑功能,

2、打开窗口的主表没有加载,如何处理?

3、李三对两个窗口表都不能编辑。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/10/9 20:57:00 [只看该作者]

 第一个问题不存在,你重新打开项目试一下。

 第二个问题,对于窗口表,权限写在窗口的afterload中。每个窗口打开后,自动执行一个内部函数(自己设计的权限),去限制窗口表。

 第三个问题,看第二个问题的处理。在afteropenproject执行权限后,若窗口关闭重新打开,权限是失效的。

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


加好友 发短信
等级:小狐 帖子:300 积分:2307 威望:0 精华:0 注册:2012/11/14 11:25:00
  发帖心情 Post By:2013/10/9 21:36:00 [只看该作者]

我完全按照上述代码进行权限设置,使用外部表只做了一点改动:用户名 = '" & User.Name & "' 改为用户名 = '" & _UserName & "'

项目执行结果是:没有给权限的用户可以编辑好多表,设置某个表只有某个用户可以编辑却实现不了,请教可能是什么原因?我再好好排查,谢谢


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


加好友 发短信
等级:小狐 帖子:300 积分:2307 威望:0 精华:0 注册:2012/11/14 11:25:00
  发帖心情 Post By:2013/10/10 17:22:00 [只看该作者]

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

麻烦老师指教对没有加载表如何进行权限设置,非常感谢BIN老师和有点甜老师的指教。


 回到顶部