114 lines
2.9 KiB
ObjectPascal
114 lines
2.9 KiB
ObjectPascal
|
|
unit uDataModuleUsuarios;
|
|||
|
|
|
|||
|
|
interface
|
|||
|
|
|
|||
|
|
uses {vcl:} SysUtils, Classes, DB, DBClient,
|
|||
|
|
{RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter,
|
|||
|
|
uROServiceComponent, uRORemoteService, uROClient, uROBinMessage,
|
|||
|
|
uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable,
|
|||
|
|
FactuGES_Intf, uDADesigntimeCall;
|
|||
|
|
|
|||
|
|
const
|
|||
|
|
ROL_ADMIN = 'Administrador';
|
|||
|
|
|
|||
|
|
type
|
|||
|
|
TdmUsuarios = class(TDAClientDataModule)
|
|||
|
|
ROLoginService: TRORemoteService;
|
|||
|
|
tbl_Usuarios: TDACDSDataTable;
|
|||
|
|
ds_Usuarios: TDADataSource;
|
|||
|
|
DADesigntimeCall: TDADesigntimeCall;
|
|||
|
|
procedure DAClientDataModuleCreate(Sender: TObject);
|
|||
|
|
procedure DAClientDataModuleDestroy(Sender: TObject);
|
|||
|
|
private
|
|||
|
|
FLoginInfo: TLoginInfo;
|
|||
|
|
function CambiarPassword (const APassword : String) : boolean; overload;
|
|||
|
|
|
|||
|
|
public
|
|||
|
|
function Login: Boolean; overload;
|
|||
|
|
function Login(Usuario: String; Password: String): Boolean; overload;
|
|||
|
|
procedure Logout;
|
|||
|
|
procedure CambiarPassword; overload;
|
|||
|
|
function EsAdmin : Boolean;
|
|||
|
|
property LoginInfo: TLoginInfo read FLoginInfo write FLoginInfo;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
var
|
|||
|
|
dmUsuarios: TdmUsuarios;
|
|||
|
|
|
|||
|
|
implementation
|
|||
|
|
|
|||
|
|
{$R *.DFM}
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
Forms, Controls, uDataTableUtils, uDataModuleBase, uLoginForm,
|
|||
|
|
uCambiarPassword, Dialogs, Windows;
|
|||
|
|
|
|||
|
|
{ TDAClientDataModule1 }
|
|||
|
|
|
|||
|
|
procedure TdmUsuarios.DAClientDataModuleCreate(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
ROLoginService.Channel := dmBase.Channel;
|
|||
|
|
ROLoginService.Message := dmBase.Message;
|
|||
|
|
Adapter := dmBase.Adapter;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmUsuarios.Login: Boolean;
|
|||
|
|
begin
|
|||
|
|
with TfLoginForm.Create(NIL) do
|
|||
|
|
try
|
|||
|
|
if Assigned(FLoginInfo) then
|
|||
|
|
edtUser.Text := FLoginInfo.UserID;
|
|||
|
|
Result := (ShowModal = mrOK)
|
|||
|
|
finally
|
|||
|
|
Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmUsuarios.Login(Usuario: String; Password: String): Boolean;
|
|||
|
|
begin
|
|||
|
|
Result := (ROLoginService as IsrvLogin).Login(Usuario, Password, FLoginInfo);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TdmUsuarios.Logout;
|
|||
|
|
begin
|
|||
|
|
(ROLoginService as IsrvLogin).Logout;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TdmUsuarios.DAClientDataModuleDestroy(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
FreeAndNIL(FLoginInfo);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmUsuarios.EsAdmin: Boolean;
|
|||
|
|
begin
|
|||
|
|
Result := (Pos(ROL_ADMIN, LoginInfo.Roles.Items[0]) > 0);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TdmUsuarios.CambiarPassword;
|
|||
|
|
begin
|
|||
|
|
with TfCambiarPassword.Create(NIL) do
|
|||
|
|
try
|
|||
|
|
if ShowModal = mrOk then
|
|||
|
|
if CambiarPassword(edtPassword.Text) then
|
|||
|
|
Application.MessageBox('La contrase<73>a ha sido cambiada correctamente.', 'FactuGES', MB_OK);
|
|||
|
|
finally
|
|||
|
|
Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmUsuarios.CambiarPassword(const APassword: String): boolean;
|
|||
|
|
begin
|
|||
|
|
Result := False;
|
|||
|
|
if not (ROLoginService as IsrvLogin).SetUserPassword(LoginInfo.UserID, APassword) then
|
|||
|
|
raise Exception.Create('Error en el servidor. No se ha podido cambiar la contrase<73>a');
|
|||
|
|
Result := True;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
initialization
|
|||
|
|
dmUsuarios := TdmUsuarios.Create(nil);
|
|||
|
|
|
|||
|
|
finalization
|
|||
|
|
FreeAndNil(dmUsuarios);
|
|||
|
|
|
|||
|
|
end.
|