程序代码:
* 权限检查-------------------------------------------------------------------
FUNCTION CheckRight(tcModule) && cModule(模块名)
LOCAL nSelect,cRight,nMid,lFlag
nSelect = SELECT()
cRight = '无'
* 找到模块 tcModule 对应的模块号 nMid
IF !USED('module')
USE module SHARED IN 0
lFlag = .t.
ENDIF
SELECT module
LOCATE FOR ALLT(UPPER(Module)) == ALLT(UPPER(tcModule)) AND !DELETED()
nMid = m_id
IF lFlag
USE IN module
ENDIF
* 先处理组权限
lFlag = .f.
IF !USED('right')
USE right SHARED IN 0
lFlag = .t.
ENDIF
SELECT right
IF gnGroupId # 0
LOCATE FOR user_id = gnGroupId AND user_type = 'G' AND m_id = nMid AND !DELETED()
IF FOUND()
cRight = right
ENDIF
ENDIF
* 再处理用户权限
LOCATE FOR user_id = gnUserId AND user_type = 'U' AND m_id = nMid AND !DELETED()
IF FOUND()
cRight = right
ENDIF
IF lFlag
USE IN right
ENDIF
SELECT (nSelect)
RETURN cRight
ENDFUNC