mirror of
https://github.com/CloudDelphi/safety4d.git
synced 2025-12-19 18:03:47 +01:00
318 lines
6.3 KiB
ObjectPascal
318 lines
6.3 KiB
ObjectPascal
unit Unit1;
|
||
|
||
interface
|
||
|
||
uses
|
||
Winapi.Windows,
|
||
Winapi.Messages,
|
||
System.SysUtils,
|
||
System.Variants,
|
||
System.Classes,
|
||
Vcl.Graphics,
|
||
Vcl.Controls,
|
||
Vcl.Forms,
|
||
Vcl.Dialogs,
|
||
Vcl.StdCtrls;
|
||
|
||
type
|
||
TForm1 = class(TForm)
|
||
GetResources: TButton;
|
||
Memo1: TMemo;
|
||
Button1: TButton;
|
||
Button2: TButton;
|
||
Button3: TButton;
|
||
Button4: TButton;
|
||
Button5: TButton;
|
||
Button6: TButton;
|
||
Button7: TButton;
|
||
Button8: TButton;
|
||
Edit1: TEdit;
|
||
procedure GetResourcesClick(Sender: TObject);
|
||
procedure Button1Click(Sender: TObject);
|
||
procedure Button2Click(Sender: TObject);
|
||
procedure Button3Click(Sender: TObject);
|
||
procedure Button4Click(Sender: TObject);
|
||
procedure Button5Click(Sender: TObject);
|
||
procedure Button6Click(Sender: TObject);
|
||
procedure Button7Click(Sender: TObject);
|
||
procedure Button8Click(Sender: TObject);
|
||
private
|
||
{ Private declarations }
|
||
procedure RegisterResources;
|
||
procedure _GetResources;
|
||
procedure _GetGroupsPermissions;
|
||
procedure _GetUserKeys;
|
||
public
|
||
{ Public declarations }
|
||
end;
|
||
|
||
var
|
||
Form1: TForm1;
|
||
|
||
implementation
|
||
|
||
{$R *.dfm}
|
||
|
||
uses
|
||
Safety4D,
|
||
System.JSON,
|
||
Rest.Json,
|
||
System.IOUtils;
|
||
|
||
procedure TForm1._GetGroupsPermissions;
|
||
var
|
||
aJsonSafety4D : TJsonObject;
|
||
begin
|
||
aJsonSafety4D := TJSONObject.Create;
|
||
try
|
||
TSafety4D
|
||
.New
|
||
.groupPermission
|
||
.getGroups(aJsonSafety4D);
|
||
|
||
Memo1.Lines.Clear;
|
||
Memo1.Lines.Add(TJson.Format(aJsonSafety4D));
|
||
finally
|
||
aJsonSafety4D.Free;
|
||
end;
|
||
|
||
end;
|
||
|
||
procedure TForm1._GetResources;
|
||
var
|
||
aJsonSafety4D : TJsonObject;
|
||
begin
|
||
aJsonSafety4D := TJSONObject.Create;
|
||
try
|
||
TSafety4D
|
||
.New
|
||
.resources
|
||
.getResource(aJsonSafety4D);
|
||
|
||
Memo1.Lines.Clear;
|
||
Memo1.Lines.Add(TJson.Format(aJsonSafety4D));
|
||
finally
|
||
aJsonSafety4D.Free;
|
||
end;
|
||
end;
|
||
|
||
procedure TForm1._GetUserKeys;
|
||
var
|
||
aJsonSafety4D : TJsonObject;
|
||
begin
|
||
aJsonSafety4D := TJSONObject.Create;
|
||
try
|
||
TSafety4D
|
||
.New
|
||
.userKey
|
||
.getUserKey(aJsonSafety4D);
|
||
|
||
Memo1.Lines.Clear;
|
||
Memo1.Lines.Add(TJson.Format(aJsonSafety4D));
|
||
finally
|
||
aJsonSafety4D.Free;
|
||
end;
|
||
end;
|
||
|
||
procedure TForm1.GetResourcesClick(Sender: TObject);
|
||
begin
|
||
_GetResources;
|
||
|
||
{*
|
||
TRbac4D
|
||
.New
|
||
|
||
//Como registrar os recursos
|
||
//Default Resource [view, read, write, delete, action]
|
||
|
||
//<sGroup, TDictionary<sProviderName, TDictionary<sActions, string>>>;
|
||
|
||
|
||
|
||
|
||
//Buscar grupo de permiss<73>es
|
||
TRbac4D
|
||
.New
|
||
.getFunctionDefinitions; //TArray<TFunctionDefinition>
|
||
|
||
|
||
//Busar Resources
|
||
TRbac4D
|
||
.New
|
||
.getResourcesGroup('GroupName'); //TArray<TResourcesGroupName>
|
||
|
||
|
||
//Como validar o acesso a um recurso
|
||
TRbac4D
|
||
.New
|
||
.validateAccess
|
||
.roleName('operador')
|
||
.group('housex')
|
||
.provider('user')
|
||
.resource('Actions.getSaldo')
|
||
.Execute; //Boolean
|
||
|
||
|
||
//Atribuir as Roles na instancia global
|
||
TRbac4D
|
||
.New
|
||
.roleName('operador|marketing|gerente');
|
||
|
||
|
||
TRbac4D
|
||
.New
|
||
.loadConfiguration(aJsonString);
|
||
|
||
TRbac4D
|
||
.New
|
||
.saveConfiguration; //Retorna JsonString;
|
||
|
||
*}
|
||
end;
|
||
|
||
procedure TForm1.Button1Click(Sender: TObject);
|
||
begin
|
||
TSafety4D
|
||
.New
|
||
.groupPermission
|
||
.groupRegister
|
||
.add('Gerente')
|
||
.description('Permiss<73>es completa de gest<73>o do Sistema')
|
||
.actions
|
||
.add('*')
|
||
.&end
|
||
.notActions
|
||
.add('users.delete')
|
||
.add('users.write')
|
||
.&end
|
||
.&end
|
||
|
||
.groupRegister
|
||
.add('Comercial')
|
||
.description('Permiss<73>es de Recursos Comerciais')
|
||
.actions
|
||
.add('*')
|
||
.&end
|
||
.notActions
|
||
.add('users.delete')
|
||
.add('users.write')
|
||
.&end
|
||
.&end
|
||
.&end;
|
||
end;
|
||
|
||
procedure TForm1.Button2Click(Sender: TObject);
|
||
begin
|
||
TSafety4D
|
||
.New
|
||
.userKey
|
||
.registerUserKey
|
||
.Add('Fulano de Tal')
|
||
.addPermission('Gerente')
|
||
.&end
|
||
.Add('Beltrano')
|
||
.addPermission('Comercial')
|
||
.&end
|
||
.&end
|
||
.&end;
|
||
|
||
_GetUserKeys;
|
||
end;
|
||
|
||
procedure TForm1.Button3Click(Sender: TObject);
|
||
var
|
||
aJsonSafety4D : TJsonObject;
|
||
begin
|
||
aJsonSafety4D := TJSONObject.Create;
|
||
try
|
||
TSafety4D.New.getConfig(aJsonSafety4D);
|
||
|
||
Memo1.Lines.Clear;
|
||
Memo1.Lines.Add(TJson.Format(aJsonSafety4D));
|
||
finally
|
||
aJsonSafety4D.Free;
|
||
end;
|
||
|
||
end;
|
||
|
||
procedure TForm1.Button4Click(Sender: TObject);
|
||
begin
|
||
RegisterResources;
|
||
end;
|
||
|
||
procedure TForm1.Button5Click(Sender: TObject);
|
||
begin
|
||
TSafety4D.New.SaveToStorage();
|
||
end;
|
||
|
||
procedure TForm1.Button6Click(Sender: TObject);
|
||
var
|
||
JSONValue : TJsonValue;
|
||
LFileName: string;
|
||
begin
|
||
LFileName := ChangeFileExt(ParamStr(0), '.s4d');
|
||
JSONValue := TJSONObject.ParseJSONValue(TFile.ReadAllText(LFileName));
|
||
try
|
||
TSafety4D.New.LoadConfig(JSONValue as TJSONObject);
|
||
finally
|
||
JSONValue.Free;
|
||
end;
|
||
end;
|
||
|
||
procedure TForm1.Button7Click(Sender: TObject);
|
||
begin
|
||
_GetGroupsPermissions;
|
||
end;
|
||
|
||
procedure TForm1.Button8Click(Sender: TObject);
|
||
begin
|
||
try
|
||
TSafety4D.New
|
||
.Validation
|
||
.userKey('{34C940ED-50E7-4CE3-B701-03CF1E15F28B}')
|
||
.application('delphitohero')
|
||
.resource('users')
|
||
.action(edit1.Text)
|
||
.validate;
|
||
ShowMessage('Usuario Autorizado');
|
||
except on e : Exception do
|
||
raise Exception.Create(e.Message);
|
||
end;
|
||
end;
|
||
|
||
procedure TForm1.RegisterResources;
|
||
begin
|
||
TSafety4D
|
||
.New
|
||
.resources
|
||
.registerResources
|
||
.resourcesGroupName
|
||
.add('delphitohero')
|
||
.providerName
|
||
.add('users')
|
||
.actions
|
||
.add('read')
|
||
.description('read-only')
|
||
.errormsg('not permit')
|
||
.&end
|
||
.add('write')
|
||
.description('read-write')
|
||
.errormsg('not write data')
|
||
.&end
|
||
.add('delete')
|
||
.description('delete-data')
|
||
.errormsg('not delete data')
|
||
.&end
|
||
.add('view')
|
||
.description('view data')
|
||
.errormsg('not view data')
|
||
.&end
|
||
.&end
|
||
.&end
|
||
.&end
|
||
.&end
|
||
.&end;
|
||
end;
|
||
|
||
end.
|