Skip to content

Commit

Permalink
Remoção de Paremetros desnecessarios e voltar eventos ao DataModule
Browse files Browse the repository at this point in the history
  • Loading branch information
GuilhermeDischer committed May 18, 2023
1 parent da4cc69 commit 44aea16
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 95 deletions.
155 changes: 84 additions & 71 deletions CORE/Source/Basic/Mechanics/uRESTDWAuthenticators.pas
Original file line number Diff line number Diff line change
Expand Up @@ -29,23 +29,6 @@ interface
uRESTDWTools, uRESTDWParams;

type
TOnBasicAuth = Procedure(Welcomemsg, AccessTag, DataRoute,
Username, Password : String;
Var Params : TRESTDWParams;
Var ErrorCode : Integer;
Var ErrorMessage : String;
Var Accept : Boolean) Of Object;
TOnGetToken = Procedure(Welcomemsg,
AccessTag : String;
Params : TRESTDWParams;
// AuthOptions : TRESTDWAuthToken;
Var ErrorCode : Integer;
Var ErrorMessage : String;
Var TokenID : String;
Var Accept : Boolean) Of Object;
TOnRenewToken = Procedure() of Object;


TRESTDWAuthenticatorBase = class(TRESTDWComponent)
private
FAuthDialog: Boolean;
Expand All @@ -61,31 +44,30 @@ TRESTDWServerAuthBase = class(TRESTDWAuthenticatorBase)
private

public
function AuthValidate(ADataModuleRESTDW: TObject; var ANeedAuthorization: Boolean;
AUrlToExec, AWelcomeMessage, AAccessTag, AAuthUsername, AAuthPassword, ADataRoute: String;
ARawHeaders: TStrings; ARequestType: TRequestType; var ADWParams: TRESTDWParams; var AGetToken: Boolean; var ATokenValidate: Boolean;
var AToken: String; var AErrorCode: Integer; var AErrorMessage: String; var AAcceptAuth: Boolean): Boolean; virtual; abstract;
function AuthValidate(ADataModuleRESTDW: TObject;
AUrlToExec, AWelcomeMessage, AAccessTag, AAuthUsername, AAuthPassword: String;
ARawHeaders: TStrings; ARequestType: TRequestType; var ADWParams: TRESTDWParams;
var AGetToken: Boolean; var ATokenValidate: Boolean; var AToken: String;
var AErrorCode: Integer; var AErrorMessage: String; var AAcceptAuth: Boolean): Boolean; virtual; abstract;
end;

TRESTDWAuthBasic = class(TRESTDWServerAuthBase)
private
FPassword: String;
FUserName: String;
FOnBasicAuth: TOnBasicAuth;
procedure PrepareBasicAuth(AAuthenticationString: String; var AAuthUsername, AAuthPassword: String);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function AuthValidate(ADataModuleRESTDW: TObject; var ANeedAuthorization: Boolean;
AUrlToExec, AWelcomeMessage, AAccessTag, AAuthUsername, AAuthPassword, ADataRoute: String;
ARawHeaders: TStrings; ARequestType: TRequestType; var ADWParams: TRESTDWParams; var AGetToken: Boolean; var ATokenValidate: Boolean;
var AToken: String; var AErrorCode: Integer; var AErrorMessage: String; var AAcceptAuth: Boolean): Boolean; override;
function AuthValidate(ADataModuleRESTDW: TObject;
AUrlToExec, AWelcomeMessage, AAccessTag, AAuthUsername, AAuthPassword: String;
ARawHeaders: TStrings; ARequestType: TRequestType; var ADWParams: TRESTDWParams;
var AGetToken: Boolean; var ATokenValidate: Boolean; var AToken: String;
var AErrorCode: Integer; var AErrorMessage: String; var AAcceptAuth: Boolean): Boolean; override;
function ValidateAuth(AUserName, APassword: string): boolean;
published
property UserName: String read FUserName write FUserName;
property Password: String read FPassword write FPassword;
//eventos
property OnBasicAuth: TOnBasicAuth read FOnBasicAuth write FOnBasicAuth;
end;

TRESTDWAuthToken = class(TRESTDWServerAuthBase)
Expand All @@ -105,14 +87,13 @@ TRESTDWAuthToken = class(TRESTDWServerAuthBase)
FToken: String;
FAutoGetToken: Boolean;
FAutoRenewToken: Boolean;
FOnGetToken: TOnGetToken;
FOnRenewToken: TOnRenewToken;
procedure ClearToken;
procedure SetGetTokenEvent(AValue: String);
procedure SetToken(AValue: String);
function GetTokenType(AValue: String): TRESTDWTokenType;
function GetCryptType(AValue: String): TRESTDWCryptType;
procedure GenerateToken(ARequestType: TRequestType; AParams: TRESTDWParams; ARawHeaders: TStrings;
procedure GenerateToken(ADataModuleRESTDW: TObject; ARequestType: TRequestType;
AParams: TRESTDWParams; ARawHeaders: TStrings;
AWelcomeMessage, AAccessTag: String;
var ATokenValidate: Boolean; var AToken: String;
var AGetToken: Boolean; var AErrorCode: Integer;
Expand All @@ -124,10 +105,11 @@ TRESTDWAuthToken = class(TRESTDWServerAuthBase)
procedure FromToken(ATokenValue: String);
function GetToken(ASecrets: String): String;
function ValidateToken(AValue: String): Boolean; overload;
function AuthValidate(ADataModuleRESTDW: TObject; var ANeedAuthorization: Boolean;
AUrlToExec, AWelcomeMessage, AAccessTag, AAuthUsername, AAuthPassword, ADataRoute: String;
ARawHeaders: TStrings; ARequestType: TRequestType; var ADWParams: TRESTDWParams; var AGetToken: Boolean; var ATokenValidate: Boolean;
var AToken: String; var AErrorCode: Integer; var AErrorMessage: String; var AAcceptAuth: Boolean): Boolean; override;
function AuthValidate(ADataModuleRESTDW: TObject;
AUrlToExec, AWelcomeMessage, AAccessTag, AAuthUsername, AAuthPassword: String;
ARawHeaders: TStrings; ARequestType: TRequestType; var ADWParams: TRESTDWParams;
var AGetToken: Boolean; var ATokenValidate: Boolean; var AToken: String;
var AErrorCode: Integer; var AErrorMessage: String; var AAcceptAuth: Boolean): Boolean; override;
published
property BeginTime: TDateTime read FBeginTime write FBeginTime;
property EndTime: TDateTime read FEndTime write FEndTime;
Expand All @@ -147,9 +129,6 @@ TRESTDWAuthToken = class(TRESTDWServerAuthBase)
property Token: String read FToken write SetToken;
property AutoGetToken: Boolean read FAutoGetToken write FAutoGetToken;
property AutoRenewToken: Boolean read FAutoRenewToken write FAutoRenewToken;
// eventos
Property OnGetToken: TOnGetToken Read FOnGetToken Write FOnGetToken;
Property OnRenewToken: TOnRenewToken Read FOnRenewToken Write FOnRenewToken;
end;

TRESTDWAuthOAuth = class(TRESTDWServerAuthBase)
Expand All @@ -166,10 +145,11 @@ TRESTDWAuthOAuth = class(TRESTDWServerAuthBase)
FExpiresIn: TDateTime;
public
constructor Create(aOwner: TComponent); override;
function AuthValidate(ADataModuleRESTDW: TObject; var ANeedAuthorization: Boolean;
AUrlToExec, AWelcomeMessage, AAccessTag, AAuthUsername, AAuthPassword, ADataRoute: String;
ARawHeaders: TStrings; ARequestType: TRequestType; var ADWParams: TRESTDWParams; var AGetToken: Boolean; var ATokenValidate: Boolean;
var AToken: String; var AErrorCode: Integer; var AErrorMessage: String; var AAcceptAuth: Boolean): Boolean; override;
function AuthValidate(ADataModuleRESTDW: TObject;
AUrlToExec, AWelcomeMessage, AAccessTag, AAuthUsername, AAuthPassword: String;
ARawHeaders: TStrings; ARequestType: TRequestType; var ADWParams: TRESTDWParams;
var AGetToken: Boolean; var ATokenValidate: Boolean; var AToken: String;
var AErrorCode: Integer; var AErrorMessage: String; var AAcceptAuth: Boolean): Boolean; override;
published
property TokenType: TRESTDWAuthOptionTypes read FTokenType write FTokenType;
property AutoBuildHex: Boolean read FAutoBuildHex write FAutoBuildHex;
Expand All @@ -183,18 +163,48 @@ TRESTDWAuthOAuth = class(TRESTDWServerAuthBase)
property ExpiresIn: TDateTime read FExpiresIn;
end;

TOnUserBasicAuth = Procedure(Welcomemsg, AccessTag,
Username, Password : String;
Var Params : TRESTDWParams;
Var ErrorCode : Integer;
Var ErrorMessage : String;
Var Accept : Boolean) Of Object;

TOnGetToken = Procedure(Welcomemsg,
AccessTag : String;
Params : TRESTDWParams;
AuthOptions : TRESTDWAuthToken;
Var ErrorCode : Integer;
Var ErrorMessage : String;
Var TokenID : String;
Var Accept : Boolean) Of Object;

TOnUserTokenAuth = Procedure(Welcomemsg,
AccessTag : String;
Params : TRESTDWParams;
AuthOptions : TRESTDWAuthToken;
Var ErrorCode : Integer;
Var ErrorMessage : String;
Var TokenID : String;
Var Accept : Boolean) Of Object;



TOnRenewToken = Procedure() of Object;


implementation

uses
uRESTDWDatamodule;

{ TRESTDWAuthBasic }

function TRESTDWAuthBasic.AuthValidate(ADataModuleRESTDW: TObject;
var ANeedAuthorization: Boolean; AUrlToExec, AWelcomeMessage, AAccessTag,
AAuthUsername, AAuthPassword, ADataRoute: String; ARawHeaders: TStrings; ARequestType: TRequestType;
var ADWParams: TRESTDWParams; var AGetToken: Boolean; var ATokenValidate: Boolean; var AToken: String;
var AErrorCode: Integer; var AErrorMessage: String;
function TRESTDWAuthBasic.AuthValidate(ADataModuleRESTDW: TObject; AUrlToExec,
AWelcomeMessage, AAccessTag, AAuthUsername, AAuthPassword: String;
ARawHeaders: TStrings; ARequestType: TRequestType;
var ADWParams: TRESTDWParams; var AGetToken, ATokenValidate: Boolean;
var AToken: String; var AErrorCode: Integer; var AErrorMessage: String;
var AAcceptAuth: Boolean): Boolean;
var
LAuthenticationString: String;
Expand All @@ -204,9 +214,9 @@ function TRESTDWAuthBasic.AuthValidate(ADataModuleRESTDW: TObject;
if (LAuthenticationString <> '') and ((AAuthUsername = '') and (AAuthPassword = '')) then
Self.PrepareBasicAuth(LAuthenticationString, AAuthUsername, AAuthPassword);

if Assigned(Self.OnBasicAuth) then
Self.OnBasicAuth(AWelcomeMessage, AAccessTag, ADataRoute, AAuthUsername,
AAuthPassword, ADWParams, AErrorCode, AErrorMessage, AAcceptAuth)
if Assigned(TServerMethodDataModule(ADataModuleRESTDW).OnUserBasicAuth) then
TServerMethodDataModule(ADataModuleRESTDW).OnUserBasicAuth(AWelcomeMessage, AAccessTag, AAuthUsername,
AAuthPassword, ADWParams, AErrorCode, AErrorMessage, AAcceptAuth)
else
AAcceptAuth := Self.ValidateAuth(AAuthUsername, AAuthPassword);

Expand Down Expand Up @@ -259,11 +269,11 @@ procedure TRESTDWAuthToken.Assign(ASource: TPersistent);
inherited Assign(ASource);
end;

function TRESTDWAuthToken.AuthValidate(ADataModuleRESTDW: TObject;
var ANeedAuthorization: Boolean; AUrlToExec, AWelcomeMessage, AAccessTag,
AAuthUsername, AAuthPassword, ADataRoute: String; ARawHeaders: TStrings; ARequestType: TRequestType;
var ADWParams: TRESTDWParams; var AGetToken: Boolean; var ATokenValidate: Boolean; var AToken: String;
var AErrorCode: Integer; var AErrorMessage: String;
function TRESTDWAuthToken.AuthValidate(ADataModuleRESTDW: TObject; AUrlToExec,
AWelcomeMessage, AAccessTag, AAuthUsername, AAuthPassword: String;
ARawHeaders: TStrings; ARequestType: TRequestType;
var ADWParams: TRESTDWParams; var AGetToken, ATokenValidate: Boolean;
var AToken: String; var AErrorCode: Integer; var AErrorMessage: String;
var AAcceptAuth: Boolean): Boolean;
var
LUrlToken, LToken, LTokenOrig: String;
Expand All @@ -277,7 +287,7 @@ function TRESTDWAuthToken.AuthValidate(ADataModuleRESTDW: TObject;

if LUrlToken = LowerCase(Self.GetTokenEvent) then
begin
Self.GenerateToken(ARequestType, ADWParams, ARawHeaders,
Self.GenerateToken(ADataModuleRESTDW, ARequestType, ADWParams, ARawHeaders,
AWelcomeMessage, AAccessTag, ATokenValidate,
AToken, AGetToken, AErrorCode, AErrorMessage, AAcceptAuth);
Exit;
Expand Down Expand Up @@ -436,10 +446,11 @@ procedure TRESTDWAuthToken.FromToken(ATokenValue: String);
end;
end;

procedure TRESTDWAuthToken.GenerateToken(ARequestType: TRequestType;
AParams: TRESTDWParams; ARawHeaders: TStrings; AWelcomeMessage, AAccessTag: String;
var ATokenValidate: Boolean; var AToken: String; var AGetToken: Boolean;
var AErrorCode: Integer; var AErrorMessage: String; var AAcceptAuth: Boolean);
procedure TRESTDWAuthToken.GenerateToken(ADataModuleRESTDW: TObject;
ARequestType: TRequestType; AParams: TRESTDWParams; ARawHeaders: TStrings;
AWelcomeMessage, AAccessTag: String; var ATokenValidate: Boolean; var AToken: String;
var AGetToken: Boolean; var AErrorCode: Integer; var AErrorMessage: String;
var AAcceptAuth: Boolean);
var
LAuthTokenParam: TRESTDWAuthToken;
LParams: TRESTDWParams;
Expand All @@ -451,7 +462,7 @@ procedure TRESTDWAuthToken.GenerateToken(ARequestType: TRequestType;
if (RequestTypeToRoute(ARequestType) in Self.GetTokenRoutes) or
(crAll in Self.GetTokenRoutes) then
begin
if Assigned(Self.OnGetToken) then
if Assigned(TServerMethodDataModule(ADataModuleRESTDW).OnGetToken) then
begin
ATokenValidate := True;
LAuthTokenParam := TRESTDWAuthToken.Create(Self);
Expand All @@ -467,14 +478,14 @@ procedure TRESTDWAuthToken.GenerateToken(ARequestType: TRequestType;
LParams := TRESTDWParams.Create;
LParams.FromJSON(AParams.ItemsString['RDWParams'].Value);

Self.OnGetToken(AWelcomeMessage, AAccessTag, LParams,
AErrorCode, AErrorMessage, AToken, AAcceptAuth);
TServerMethodDataModule(ADataModuleRESTDW).OnGetToken(AWelcomeMessage, AAccessTag, LParams, LAuthTokenParam,
AErrorCode, AErrorMessage, AToken, AAcceptAuth);

FreeAndNil(LParams);
end
else
Self.OnGetToken(AWelcomeMessage, AAccessTag, AParams,
AErrorCode, AErrorMessage, AToken, AAcceptAuth);
TServerMethodDataModule(ADataModuleRESTDW).OnGetToken(AWelcomeMessage, AAccessTag, AParams, LAuthTokenParam,
AErrorCode, AErrorMessage, AToken, AAcceptAuth);
end;
end;
end;
Expand Down Expand Up @@ -699,13 +710,15 @@ function TRESTDWAuthToken.ValidateToken(AValue: String): Boolean;

{ TRESTDWAuthOAuth }

function TRESTDWAuthOAuth.AuthValidate(ADataModuleRESTDW: TObject;
var ANeedAuthorization: Boolean; AUrlToExec, AWelcomeMessage, AAccessTag,
AAuthUsername, AAuthPassword, ADataRoute: String; ARawHeaders: TStrings;
ARequestType: TRequestType; var ADWParams: TRESTDWParams; var AGetToken,
ATokenValidate: Boolean; var AToken: String; var AErrorCode: Integer;
var AErrorMessage: String; var AAcceptAuth: Boolean): Boolean;
function TRESTDWAuthOAuth.AuthValidate(ADataModuleRESTDW: TObject; AUrlToExec,
AWelcomeMessage, AAccessTag, AAuthUsername, AAuthPassword: String;
ARawHeaders: TStrings; ARequestType: TRequestType;
var ADWParams: TRESTDWParams; var AGetToken, ATokenValidate: Boolean;
var AToken: String; var AErrorCode: Integer; var AErrorMessage: String;
var AAcceptAuth: Boolean): Boolean;
begin
AAcceptAuth := False;
Result := False;
raise Exception.Create(cErrorOAuthNotImplenented);
end;

Expand Down
2 changes: 0 additions & 2 deletions CORE/Source/Basic/uRESTDWBasic.pas
Original file line number Diff line number Diff line change
Expand Up @@ -2876,13 +2876,11 @@ procedure TRESTClientPoolerBase.SetIpVersion(IpV: TRESTDWClientIpVersions);
Begin
// Aqui que Valida a Autenticação
vAuthenticator.AuthValidate(vTempServerMethods,
vNeedAuthorization,
vUrlToExec,
vWelcomeMessage,
vAccessTag,
AuthUsername,
AuthPassword,
vDataRoute,
RawHeaders,
RequestType,
DWParams,
Expand Down
29 changes: 7 additions & 22 deletions CORE/Source/Plugins/DMDados/uRESTDWDatamodule.pas
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,8 @@ interface
SysUtils, Classes, uRESTDWDataUtils, uRESTDWComponentEvents,
uRESTDWBasicTypes, uRESTDWConsts, uRESTDWJSONObject, uRESTDWParams, uRESTDWAuthenticators;

Type
// TUserBasicAuth = Procedure(Welcomemsg, AccessTag,
// Username, Password : String;
// Var Params : TRESTDWParams;
// Var ErrorCode : Integer;
// Var ErrorMessage : String;
// Var Accept : Boolean) Of Object;
TUserTokenAuth = Procedure(Welcomemsg,
AccessTag : String;
Params : TRESTDWParams;
AuthOptions : TRESTDWAuthToken;
Var ErrorCode : Integer;
Var ErrorMessage : String;
Var TokenID : String;
Var Accept : Boolean) Of Object;

Type
Type
TRESTDWClientInfo = Class(TObject)
Private
vip,
Expand Down Expand Up @@ -56,9 +41,9 @@ interface
vReplyEvent : TRESTDWReplyEvent;
vWelcomeMessage : TWelcomeMessage;
vMassiveProcess : TMassiveProcess;
// vUserBasicAuth : TUserBasicAuth;
vUserTokenAuth : TUserTokenAuth;
// vOnGetToken : TOnGetToken;
vUserBasicAuth : TOnUserBasicAuth;
vUserTokenAuth : TOnUserTokenAuth;
vOnGetToken : TOnGetToken;
vOnMassiveBegin,
vOnMassiveAfterStartTransaction,
vOnMassiveAfterBeforeCommit,
Expand Down Expand Up @@ -94,9 +79,9 @@ interface
Property OnMassiveAfterBeforeCommit : TMassiveEvent Read vOnMassiveAfterBeforeCommit Write vOnMassiveAfterBeforeCommit;
Property OnMassiveAfterAfterCommit : TMassiveEvent Read vOnMassiveAfterAfterCommit Write vOnMassiveAfterAfterCommit;
Property OnMassiveEnd : TMassiveEvent Read vOnMassiveEnd Write vOnMassiveEnd;
// Property OnUserBasicAuth : TUserBasicAuth Read vUserBasicAuth Write vUserBasicAuth;
Property OnUserTokenAuth : TUserTokenAuth Read vUserTokenAuth Write vUserTokenAuth;
// Property OnGetToken : TOnGetToken Read vOnGetToken Write vOnGetToken;
Property OnUserBasicAuth : TOnUserBasicAuth Read vUserBasicAuth Write vUserBasicAuth;
Property OnUserTokenAuth : TOnUserTokenAuth Read vUserTokenAuth Write vUserTokenAuth;
Property OnGetToken : TOnGetToken Read vOnGetToken Write vOnGetToken;
Property QueuedRequest : Boolean Read vQueuedRequest Write vQueuedRequest;
End;

Expand Down

0 comments on commit 44aea16

Please sign in to comment.