⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rc_readrightclass.pas

📁 亚惠快餐管理信息系统 包括亚惠快餐管理的各项功能
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit RC_ReadRightClass;

{
代码单元名称:通用权限分配工具权限读取类
从属软件:大连资金清算中心打码机管理信息系统
开发单位:大连理工大学计算机技术研究所软件工程研究室
作者:王树润
时间:2001,1,30
}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Db, ADODB;

type

  TFunction_DB_ReadRight = class(TObject)
    MyServerName: string;
    ADOQuery: TADOQuery;
    UserOrUserGroupName: string; //使用者名称
    UserOrUserGroupIdentify: string; //使用这类型:用户、用户组
    FunctionResourceName: string; //功能资源名称
    DBResourceName: string; //数据库资源名称
    DBResourceIdentify: string; //数据库资源类型
  private
    { Private declarations }
  public
    { Public declarations }
    function GetFunctionResourceRight: integer; //获取功能资源权限
    function GetFunctionReSourceResource(var FunctionResult: integer): string;
    //获取功能资源的资源
    function GetDBResourceRight(var DBRightResult: integer): string;
    //获取数据库资源权限
    function GetDBResourceResource(var DBResourceResult: integer): TStrings;
    //获取数据库资源的资源
    function GetUserPassword(var UserResult: integer): string; //获取用户密码
    function GetUserGroupResource(var UserGroupResult: integer): TStrings;
    //获取用户组所包含的用户
    function GetUserResource(var UserResourceResult: integer): string;
    //获取用户所在组
    function UserOrUserGroupExist: Boolean; //检验用户是否存在
    function FunctionResourceExist: Boolean; //检验功能资源是否存在
    function GetAllResourceBelongtheUser: TStrings;
    function GetAllGroupIncludeUsers: TStrings;
    constructor ACreate(Owner: TComponent; AServerName: string);
    destructor Destroy; override;
  end;

implementation

uses main, PublicUnit;

{============================ TFunction_DB_ReadRight 类的定义========================}

constructor TFunction_DB_ReadRight.ACreate(Owner: TComponent; AServerName:
  string);
begin
  inherited;
  MyServerName := AServerName;
  ADOQuery := TADOQuery.Create(Application);
  ADOQuery.ConnectionString :=
    'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=' +
    PublicUnit.DBUser
    + ';Password=' + PublicUnit.DBPass + ';Initial Catalog=' + PublicUnit.DbName
    +
    ';Data Source=' + AServerName;
end;

destructor TFunction_DB_ReadRight.Destroy;
begin
  ADOQuery.Free;
  inherited;
end;

//获取功能资源权限==================================================================

function TFunction_DB_ReadRight.GetFunctionResourceRight: integer;
var
  i: integer;
  GroupName: string;
begin
  if not UserOrUserGroupExist then
  begin
    Result := -1;
    Exit;
  end;
  if not FunctionResourceExist then
  begin
    Result := -2;
    Exit;
  end;
  //获取功能权限
  Result := 0;
  with ADOQuery do
  begin
    if Active then
      Close;
    Sql.Clear;
    Sql.Add('Select *');
    Sql.Add('From TPowerAssign');
    Sql.Add('Where UOrUGName=''' + UserOrUserGroupName + '''');
    Sql.Add('and UOrUGIden=''' + UserOrUserGroupIdentify + '''');
    try
      Open;
    except Exit;
    end;
    if ((RecordCount <> 0) and (Pos(FunctionResourceName,
      FieldByName('FunResName').AsString) <> 0)) then
    begin
      Result := 1;
      Exit;
    end;
    if Active then
      Close;
    GroupName := LowerCase(Trim(GetUserResource(i)));
    Sql.Clear;
    Sql.Add('Select *');
    Sql.Add('From TPowerAssign');
    Sql.Add('Where Lower(RTrim(UOrUGName))=''' + GroupName + '''');
    Sql.Add('and Lower(RTrim(UOrUGIden))=''用户组''');
    try
      Open;
    except Exit;
    end;
    if ((RecordCount <> 0) and (Pos(FunctionResourceName,
      FieldByName('FunResName').AsString) <> 0)) then
      Result := 1;
  end;

  { 该方法的相关参数:
      UserOrUserGroupIdentify:使用这类型
      UserOrUserGroupName: 使用者名称
      FunctionResourceName:功能资源名称
    该方法Result的意义:
      0:   没有执行权
      1:   具备执行权
      -1:  该使用者不存在
      -2:  该资源不存在 }
end;

//获取功能资源==================================================================

function TFunction_DB_ReadRight.GetFunctionResourceResource(var FunctionResult:
  integer): string;
begin
  if not UserOrUserGroupExist then
  begin
    FunctionResult := 0;
    Exit;
  end;
  with ADOQuery do
  begin
    //打开功能权限分配表
    if Active then
      Close;
    Sql.Clear;
    Sql.Add('Select * ');
    Sql.Add('From TPowerAssign');
    Sql.Add('where UOrUGName=''' + UserOrUserGroupName + '''');
    Sql.Add('and UOrUGIden=''' + UserOrUserGroupIdentify + '''');
    try
      Open;
    except
    end;
    if RecordCount <> 0 then
    begin
      FunctionResult := 1;
      Result := FieldByName('FunResName').AsString;
    end;
  end;
  { 该方法的相关参数:
      UserOrUserGroupIdentify:使用这类型
      UserOrUserGroupName: 使用者名称
      FunctionResourceName:功能资源名称
    该方法Result的意义:
      使用者的权限名单 }
end;

//获取数据库资源权限================================================================

function TFunction_DB_ReadRight.GetDBResourceRight(var DBRightResult: integer):
  string;
begin
  if not UserOrUserGroupExist then
  begin
    DBRightResult := -1;
    Exit;
  end;
  with ADOQuery do
  begin
    {打开数据库名字表================================================================
      if DBResourceIdentify='Table' then
      begin
        if Active then
          Close;
        Sql.Clear;
        Sql.Add('Select * From DTableName');
        try
          Open;
        except
          ShowMessage('error');
        end;
        if not Locate('EnglishName',DBResourceName,[]) then
        begin
          DBRightResult:=-2;
          Exit;
        end;
      end;
       else
       begin
         if Active then
           Close;
         Sql.Clear;
         if pos('_',DBResourceName)<>0 then
         'D'+Copy(DBResourceName,2,pos('_',DBResourceName)-1);
         Sql.Add('Select * From DTableName');
         try
           Open;
         except
           ShowMessage('error');
         end;
         if not Locate('EnglishName',DBResourceName,[]) then
         begin
           DBRightResult:=-2;
           ADOQuery.Free;
           Exit;
         end

       end;    }

     //打开数据库权限分配表========================================================
    if Active then
      Close;
    Sql.Clear;
    Sql.Add('Select * ');
    Sql.Add('From TDBAssign');
    Sql.Add('where UOrUGName=''' + UserOrUserGroupName + '''');
    Sql.Add('and UOrUGIden=''' + UserOrUserGroupIdentify + '''');
    Sql.Add('and DBResName=''' + DBResourceName + '''');
    Sql.Add('and DBResIden=''' + DBResourceIdentify + '''');
    try
      Open;
    except
    end;
    if RecordCount <> 0 then
    begin
      DBRightResult := 1;
      Result := FieldByName('DBRighName').AsString;
    end;
  end;
end;
{ 该方法的相关参数:
    UserOrUserGroupIdentify:使用这类型
    UserOrUserGroupName: 使用者名称
    DbResourceName:数据库资源名称
    DbResourceIdentify:数据库资源类型
  该方法Result的意义:
      所有合法权限 }

//获取数据库资源的资源==========================================================

function TFunction_DB_ReadRight.GetDBResourceResource(var DBResourceResult:
  integer): TStrings;
var
  ts: TStrings;
begin
  ts := TStringList.Create;
  Result := ts;
  if ((UserOrUserGroupIdentify <> '用户') and (UserOrUserGroupIdentify <>
    '用户组')) then
    Exit;
  if not UserOrUserGroupExist then
  begin
    DBResourceResult := -1;
    Exit;
  end;
  if ((LowerCase(DbResourceIdentify) <> 'table') and
    (LowerCase(DbResourceIdentify) <> 'field')
    and (LowerCase(DbResourceIdentify) <> '')) then
  begin
    DBResourceResult := -2;
    Exit;
  end;
  DBResourceResult := 0;
  with ADOQuery do
  begin
    //获取数据库权限资源
    if Active then
      Close;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -