一段权限管理的代码!

 首先申明:我是做公司原有软件的一个外挂程序,所以每个用户权限可以在原系统中定义,主要分为:
1、超级用户:享有自己开发的外挂程序的所有使用权限;
2、本人权限:可以分为:新增、查询、修改、删除、审核、撤消审核、打印等权限控制,但只能处理本人的业务单据;
2、本人所属组权限:可以分为:新增、查询、修改、删除、审核、撤消审核等权限控制,可以处理本人所属组其他成员的业务单据;
2、本人所属组组之外权限:可以分为:新增、查询、修改、删除、审核、撤消审核等权限控制,可以处理所属组组之外的其他成员的业务单据;
在数据库表中这样存储着权限:
用户编号    程序编号      本人权限            本人所属组权限                本人所属组组之外权限            控制权    是否超级用户
001        A001          YYYYYYY              YYYYYY                      YYYYYY                    N          N
001      A002        YYYYYYY              YYYYYY                      YYYYYY                    Y          N
002      A001        YYYYYYY              YYYYYY                      YYYYYY                    N          N
003      A001        YYYYYYY              YYYYYY                      YYYYYY                    N          N
003      A002        YYYYYYY              YYYYYY                      YYYYYY                    Y          N
003      A003        YYYYYYY              YYYYYY                      YYYYYY                    N          N
004                                                                                                          Y
说明:
1、当超级用户为Y时,权限设置就为空,享有自己开发的外挂程序的所有使用权限;
2、YYYYYYY(表示用户有新增、查询、修改、删除、审核、撤消审核、打印),YYYYNNY(表示用户只有新增、查询、修改、删除、打印权,没有审核、撤消审核权);
3、控制权为N时,无论组权限与本人所属组组之外权限是什么值都不作用,只有当控制权为Y时,本人所属组权限与本人所属组组之外权限才起效!

要求就是:我自己写的外挂系统如何根据上述的要求,实现相应的权限功能?   type
  TRight
= (rModule,rInsert,rModify,rDelete,rPrint,rReadAll,rApprove,rBack,rBatch);

function TBase_f.HaveRight(ModuleID,UserID: string; aRight: TRight): Boolean;
begin
 
with qry_BaseTemp do
 
begin
    Close;
    SQL.Text :
= ' select * from SYS_RIGHT where 用户编号='' ' +
      UserID
+ ' '' and 程序编号='' ' + ModuleID + ' '' ' ;
    Open;
   
case aRight of
      rModule: Result :
= FieldByName( ' ModuleRight ' ).AsInteger = 1 ;
      rInsert: Result :
= FieldByName( ' InsertRight ' ).AsInteger = 1 ;
      rModify: Result :
= FieldByName( ' ModifyRight ' ).AsInteger = 1 ;
      rDelete: Result :
= FieldByName( ' DeleteRight ' ).AsInteger = 1 ;
      rPrint: Result :
= FieldByName( ' PrintRight ' ).AsInteger = 1 ;
      rReadAll: Result :
= FieldByName( ' ReadAll ' ).AsInteger = 1 ;
      rApprove: Result :
= FieldByName( ' ApproveRight ' ).AsInteger = 1 ;
      rBack: Result :
= FieldByName( ' BackRight ' ).AsInteger = 1 ;
     
     
else Result : = False;
   
end ;
    Close;
 
end ;
end ;
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值