git-svn-id: https://192.168.0.254/svn/Proyectos.AlonsoYSal_FactuGES/trunk@5 9a1d36f3-7752-2d40-8ccb-50eb49674c68
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.
|