发新话题
打印

[求助] 怎样实现只有特定的人员才可以修改Record?( 此文章被查看:1154次,被回复:5篇!! )

怎样实现只有特定的人员才可以修改Record?

我希望record只有submitter和指定的owner还有属于SCM组的人员才能修改,但是我当前在action的设置只实现限定一种类型的user.



© 本文为 fishSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

可以通过写脚本来控制
如submitter可以按以下脚本来,其他类似
                                # get submitter
                $strSubmitterName = $entity->GetFieldValue("Submitter")->GetValue();

                # get login user
                $strLoginName = $session->GetUserLoginName();

                # get state
            $state = $entity->GetFieldValue("State")->GetValue();
               
                # 如果登陆人是submitter,且缺陷状态不为Closed,则有权限修改
            if($strSubmitterName eq $strLoginName){
                          if($state eq "Closed"){
                                    $result = 0;
                          }else{
                                        # has permission to perform
                            $result = 1;
                          }
            }else{
                  $result = 0;
            }



© 本文为 happygodSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

可以把上面的脚本改写一下,放在Modify这个Action的Access Control上,这样当任何一个人在执行Modify的时候,首先判断的是否是某个用户或者属于某个用户组,如果验证通过则可以做这个操作,否则警告。



© 本文为 yunshanSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

引用:
原帖由 happygod 于 2007-1-10 09:00 发表
可以通过写脚本来控制
如submitter可以按以下脚本来,其他类似
                                # get submitter
                $strSubmitterName = $entity->GetFieldValue("Submitter")->GetValue() ...
要判断某个人是否属于某一个组的时候,比如,判断张三是否属于SCM组,那么这个脚本应该怎么写?谢谢

© 本文为 Reegi 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

这是一个我改写的判断一个用户是否属于某个组的方法,可以用来参考~
Function userInGroup(username, groupname)               
        Dim sessionObj
        Dim queryObj
        Dim filterObj
        Dim resultSetObj
       
        ' Initial
        userInGroup = False
       
        Set sessionObj = GetSession()
        ' start building a query of the users
        Set queryObj = sessionObj.BuildQuery("users")
        ' have the query return the desired field of the user object(s)
        queryObj.BuildField ("login_name")
       
        ' filter for members of group groupname (whatever group you want)
        Set filterObj = queryObj.BuildFilterOperator(AD_BOOL_OP_AND)
        filterObj.BuildFilter "groups", AD_COMP_OP_EQ, groupname
        Set resultSetObj = sessionObj.BuildResultSet(queryObj)
       
        ' run it
        resultSetObj.Execute
       
        Do While resultSetObj.MoveNext = AD_SUCCESS
        If username = resultSetObj.GetColumnValue(1) Then
              userInGroup = Ture
        End If
        Loop
End Function

或--

Function userInGroup(username, groupname)
        Dim sessionObj
        Dim sqlString
       
        set sessionObj = GetSession
        ' Create a SQL string to find all records and display
        sqlString = "select distinct T1.dbid,T1.login_name from" &_
        " ( ( users T1 LEFT OUTER JOIN [select * from parent_child_links where parent_fielddef_id = 16777310 ]. " &_
        "AS T4mm ON T1.dbid = T4mm.parent_dbid  ) LEFT OUTER JOIN groups T4 ON T4mm.child_dbid = T4.dbid  ) " &_
        "where T1.dbid <> 0 and T1.login_name = " & username &_
        " and (T4.name = " & groupname & ")"
       
        set resultSetObj = sessionObj.BuildSQLQuery(sqlString)
       
        resultSetObj.Execute
       
        Do While resultSetObj.MoveNext = AD_SUCCESS
                        userInGroup = Ture
        Loop
End Function

[ 本帖最后由 yunshan 于 2007-1-10 14:54 编辑 ]

© 本文为 yunshan 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

看明白了,Do While resultSetObj.MoveNext = AD_SUCCESS
                        userInGroup = Ture
        Loop
这个是关键,第二种更易懂!

tks!

© 本文为 Reegi 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

发新话题