{ **** UBPFD *********** by http://kladovka.net.ru/delphibase/ ****
>> Назначение прав пользователей на таблицу
Какое может быть описание? И так все понятно. Кто делает эти формы?
Зависимости: uses IBQuery,IBDataBase,SysUtils
Автор: Dracula, dracula@krruda.dp.ua, Krivoy Rog
Copyright:   Dracula
Дата: 28 января 2003 г.
***************************************************************** }
unit IBRights; interface uses IBQuery,IBDataBase,SysUtils;
type TIBUserRights=record sel:Boolean; ins:Boolean; upd:Boolean; del:Boolean; exe:Boolean; end;
function GetUserRights(UserName,Relation:String;IBDb:TIBDataBase):TIBUserRights; var Rights:TIBUserRights;
implementation
function GetUserRights(UserName,Relation:String;IBDb:TIBDataBase):TIBUserRights; var Qr:TIBQuery; Tr:TIBTransaction; begin if Assigned(IBDb) then begin Tr:=TIBTransaction.Create(nil); try Tr.DefaultDatabase:=IBDb; Qr:=TIBQuery.Create(nil); Qr.Database:=IBDb; Tr.StartTransaction; Qr.Close; Qr.Sql.Clear; Qr.Sql.Add('select RDB$USER,RDB$PRIVILEGE,RDB$RELATION_NAME '+ 'from RDB$USER_PRIVILEGES '+ 'where upper(RDB$USER)=:AUser '+ 'and upper(RDB$RELATION_NAME)=:ARelation'); Qr.Prepare; Qr.Params.ParamValues['AUser']:=AnsiUpperCase(UserName); Qr.Params.ParamValues['ARelation']:=AnsiUpperCase(Relation); Qr.Open; while not Qr.eof do begin if Copy(Trim(Qr.FieldByName('RDB$PRIVILEGE').AsString),1,1)='S' then Rights.sel:=true else Rights.sel:=false; if Copy(Trim(Qr.FieldByName('RDB$PRIVILEGE').AsString),1,1)='I' then Rights.ins:=true else Rights.ins:=false; if Copy(Trim(Qr.FieldByName('RDB$PRIVILEGE').AsString),1,1)='U' then Rights.upd:=true else Rights.upd:=false; if Copy(Trim(Qr.FieldByName('RDB$PRIVILEGE').AsString),1,1)='D' then Rights.del:=true else Rights.del:=false; if Copy(Trim(Qr.FieldByName('RDB$PRIVILEGE').AsString),1,1)='X' then Rights.exe:=true else Rights.exe:=false; if Copy(Trim(Qr.FieldByName('RDB$PRIVILEGE').AsString),1,1)='R' then //Rights.ref:=true else Rights.ref:=false; begin Rights.sel:=true; Rights.ins:=true; Rights.upd:=true; Rights.del:=true; Rights.exe:=true; end; Qr.Next; end; Qr.Close; Tr.Commit; Qr.Free; finally Tr.Free; end; end; Result:=Rights; end;
end.
|