📄 rc_readrightclass.pas
字号:
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 + -