2011-11-14 17:40:41 +00:00
unit uUsuariosController;
interface
uses
Classes, SysUtils, Forms, uDADataTable, uControllerBase,
uIDataModuleUsuarios, uDataModuleUsuarios, UCBase, uBizUsuarios;
type
TUCCriptografia = ( ucStandard, ucMD5) ;
IUsuariosController = interface( IControllerBase)
[ '{DD963EEC-5880-4DE7-AF55-B5080B538D84}' ]
procedure Logoff;
function StartLogin : Boolean ;
procedure VerUsuarios;
procedure VerPerfiles;
procedure VerUsuario( const AIDUser: Integer ) ; overload ;
procedure VerUsuario( AUser : IBizUsuario) ; overload ;
procedure VerPerfil( const AIDPerfil: Integer ) ; overload ;
procedure VerPerfil( APerfil : IBizPerfilUsuario) ; overload ;
procedure _ShowUserManager;
procedure _ShowProfileManager;
procedure _ShowLogManager;
procedure _ShowChangePassword;
function ComprobarUsuario( const User : String ; const Password: String ) : Boolean ;
function CambiarPassword( const AIDUser: Integer ) : Boolean ;
function GetMaxIntentosLogin: Integer ;
procedure SetMaxIntentosLogin( const Value: Integer ) ;
property MaxIntentosLogin : Integer read GetMaxIntentosLogin write SetMaxIntentosLogin;
function GetCurrentUser: IBizUsuario;
property CurrentUser: IBizUsuario read GetCurrentUser;
function GuardarPerfil( APerfil : IBizPerfilUsuario) : Boolean ;
function GuardarUsuario( AUser : IBizUsuario) : Boolean ;
function EliminarUsuario( const AIDUser : integer ) : Boolean ; overload ;
function EliminarUsuario( AUser : IBizUsuario) : Boolean ; overload ;
function EliminarPerfil( APerfil : IBizPerfilUsuario) : Boolean ; overload ;
function EliminarPerfil( const AIDPerfil : integer ) : Boolean ; overload ;
function HayUsuarioConPerfil( const AIDPerfil : integer ) : Boolean ;
function BuscarUsuario( const AIDUser: Integer ) : IBizUsuario;
function BuscarTodosUsuarios: IBizUsuario;
function DarListaPerfilesUsuario: TStringList;
function DarListaUsuarios: TStringList;
function ValidarPassword( const APassword : string ; const ALogin : String ;
const ANombre: String ; out AMsg : String ) : boolean ;
function NuevoUsuario : IBizUsuario;
function NuevoPerfil : IBizPerfilUsuario;
function GetCriptografia : TUCCriptografia;
property Criptografia: TUCCriptografia read GetCriptografia;
function GetUsarPasswordsSeguras: Boolean ;
procedure SetUsarPasswordsSeguras( const Value: Boolean ) ;
property UsarPasswordsSeguras : Boolean read GetUsarPasswordsSeguras write SetUsarPasswordsSeguras;
{
procedure ChangePassword( IDUser: Integer ; NewPassword: String ) ;
procedure AddRight( idUser: Integer ; ItemRight: TObject; FullPath: Boolean = True ) ; overload ;
procedure AddRight( idUser: Integer ; ItemRight: String ) ; overload ;
procedure AddRightEX( idUser: Integer ; Module, FormName, ObjName: String ) ;
function VerificaLogin( User, Password: String ) : Boolean ;
function GetLocalUserName: String ;
function GetLocalComputerName: String ;
function AddUser( Login, Password, Name , Mail: String ; Profile , UserExpired , DaysExpired : Integer ; PrivUser: Boolean ) : Integer ;
function ExisteUsuario( Login: String ) : Boolean ;
property CurrentUser: TUCCurrentUser read FCurrentUser write FCurrentUser;
property CurrentEmpresa : TEmpresaDef read FEmpresaAtual write FEmpresaAtual;
property UserSettings: TUCUserSettings read FUserSettings write SetUserSettings; }
end ;
TUsuariosController = class( TControllerBase, IUsuariosController)
protected
FDataModule : IDataModuleUsuarios;
FUserControl: TUserControl;
FCurrentUser : IBizUsuario;
FUsarPasswordsSeguras : Boolean ;
function GetMaxIntentosLogin: Integer ;
procedure SetMaxIntentosLogin( const Value: Integer ) ;
procedure RecibirAviso( ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable) ; override ;
function CreateEditor( const AName : String ; const IID: TGUID; out Intf) : Boolean ;
procedure AsignarDataModule;
procedure InicializarUserControl;
procedure RecogerConfiguracion;
function GetCurrentUser: IBizUsuario;
function AnadirUsuario( AUser : IBizUsuario) : Boolean ;
function ModificarUsuario( AUser : IBizUsuario) : Boolean ;
function AnadirPerfil( APerfil : IBizPerfilUsuario) : Boolean ;
function ModificarPerfil( APerfil : IBizPerfilUsuario) : Boolean ;
function ValidarUsuario( AUser: IBizUsuario) : Boolean ;
function ValidarPerfil( APerfil: IBizPerfilUsuario) : Boolean ;
function GetCriptografia : TUCCriptografia;
function CambiarPassword( const AIDUser: Integer ; const ANewPassword: String ) : Boolean ; overload ;
function GetUsarPasswordsSeguras: Boolean ;
procedure SetUsarPasswordsSeguras( const Value: Boolean ) ;
public
constructor Create; override ;
destructor Destroy; override ;
procedure Logoff;
function StartLogin : Boolean ;
procedure VerUsuarios;
procedure VerPerfiles;
procedure VerUsuario( const AIDUser: Integer ) ; overload ;
procedure VerUsuario( AUser : IBizUsuario) ; overload ;
procedure VerPerfil( const AIDPerfil: Integer ) ; overload ;
procedure VerPerfil( APerfil : IBizPerfilUsuario) ; overload ;
procedure _ShowUserManager;
procedure _ShowProfileManager;
procedure _ShowLogManager;
procedure _ShowChangePassword;
function ComprobarUsuario( const User : String ; const Password: String ) : Boolean ;
function CambiarPassword( const AIDUser: Integer ) : Boolean ; overload ;
function EliminarUsuario( const AIDUser : integer ) : Boolean ; overload ;
function EliminarUsuario( AUser : IBizUsuario) : Boolean ; overload ;
function EliminarPerfil( APerfil : IBizPerfilUsuario) : Boolean ; overload ;
function EliminarPerfil( const AIDPerfil : integer ) : Boolean ; overload ;
function NuevoUsuario : IBizUsuario;
function NuevoPerfil : IBizPerfilUsuario;
function GuardarPerfil( APerfil : IBizPerfilUsuario) : Boolean ;
function GuardarUsuario( AUser : IBizUsuario) : Boolean ;
function BuscarUsuario( const AIDUser: Integer ) : IBizUsuario;
function BuscarTodosUsuarios: IBizUsuario;
function DarListaPerfilesUsuario: TStringList;
function DarListaUsuarios: TStringList;
function HayUsuarioConPerfil( const AIDPerfil : integer ) : Boolean ;
function ValidarPassword( const APassword : string ; const ALogin : String ;
const ANombre: String ; out AMsg : String ) : boolean ;
//procedure DarIDTiendaVendedorUsuario(const IdUsuario: Integer; var AIdTienda: Integer; var ATienda: String);
property UsarPasswordsSeguras : Boolean read GetUsarPasswordsSeguras write SetUsarPasswordsSeguras;
property UserControl : TUserControl read FUserControl;
property MaxIntentosLogin : Integer read GetMaxIntentosLogin write SetMaxIntentosLogin;
property CurrentUser: IBizUsuario read GetCurrentUser;
property Criptografia: TUCCriptografia read GetCriptografia;
end ;
implementation
uses
cxControls, DB, uEditorRegistryUtils, schUsuariosClient_Intf,
uDAInterfaces, uDataTableUtils, uDialogUtils, uFactuGES_App, Dialogs,
uDateUtils, uROTypes, DateUtils, Controls, Windows, uIEditorLogin,
uIEditorUsuarios, uIEditorUsuario, uIEditorPerfilesUsuario,
2022-03-12 10:40:36 +00:00
uIEditorPerfilUsuario, uEditorCambiarPassword, uTypesConstConfiguration,
uDataModuleConfiguracion;
2011-11-14 17:40:41 +00:00
{ TUsuariosController }
function TUsuariosController. AnadirPerfil( APerfil: IBizPerfilUsuario) : Boolean ;
function GetNewIdUser: Integer ;
var
TempDs: TDataset;
begin
with FUserControl do
TempDS : = DataConnector. UCGetSQLDataSet( 'SELECT ' + TableUsers. FieldUserID + ' as MaxUserID from ' + TableUsers. TableName +
' ORDER BY ' + TableUsers. FieldUserID + ' DESC' ) ;
Result : = TempDs. FieldByName( 'MaxUserID' ) . AsInteger + 1 ;
TempDS. Close;
FreeAndNil( TempDS) ;
end ;
var
ANuevoID : Integer ;
begin
Result : = False ;
if not Assigned( APerfil) then
raise Exception. Create( 'No hay perfil asignado (AnadirPerfil)' ) ;
if ValidarPerfil( APerfil) then
begin
ShowHourglassCursor;
try
ANuevoID : = GetNewIdUser;
with FUserControl do
begin
DataConnector. UCExecSQL( Format( 'INSERT INTO %s(%s, %s, %s) Values(%d,%s,%s)' ,
[ TableUsers. TableName,
TableUsers. FieldUserID,
TableUsers. FieldUserName,
TableUsers. FieldTypeRec,
ANuevoID,
QuotedStr( APerfil. USERNAME) ,
QuotedStr( 'P' ) ] ) ) ;
end ;
Result : = ( ANuevoID > 0 ) ;
if Result then
begin
APerfil. Edit;
APerfil. ID : = ANuevoID;
APerfil. Post;
end ;
finally
HideHourglassCursor;
end ;
end ;
end ;
function TUsuariosController. AnadirUsuario( AUser: IBizUsuario) : Boolean ;
var
ANuevoID : Integer ;
begin
Result : = False ;
if not Assigned( AUser) then
raise Exception. Create( 'No hay usuario asignado (AnadirUsuario)' ) ;
if FUserControl. ExisteUsuario( AUser. LOGIN) then
begin
MessageDlg( Format( FUserControl. UserSettings. CommonMessages. UsuarioExiste, [ AUser. LOGIN] ) , mtWarning, [ mbOK] , 0 ) ;
Exit;
end ;
if ValidarUsuario( AUser) then
begin
ShowHourglassCursor;
try
ANuevoID : = FUserControl. AddUser( AUser. LOGIN, AUser. PASS, AUser. USERNAME, AUser. EMAIL,
AUser. ID_PERFIL, AUser. BLOQUEADO, AUser. USERDAYSSUN, ( AUser. PRIVILEGED = 1 ) ) ;
Result : = ( ANuevoID > 0 ) ;
if Result then
begin
AUser. Edit;
AUser. ID : = ANuevoID;
AUser. Post;
end ;
{ TODO -oLuiz -cUpgrade : Consertar a Senha para poder avisar MD5 }
{ if ( Assigned( MailUserControl) ) and ( MailUserControl. AdicionaUsuario. Ativo) then
try
MailUserControl. EnviaEmailAdicionaUsuario( vNome, vLogin, Encrypt( vNovaSenha, EncryptKey) , vEmail, IntToStr( vPerfil) , EncryptKey) ;
except
on E: Exception do
Log( E. Message , llMedio) ;
end ; }
finally
HideHourglassCursor;
end ;
end ;
end ;
procedure TUsuariosController. AsignarDataModule;
begin
FDataModule : = TDataModuleUsuarios. Create( Nil ) ;
end ;
function TUsuariosController. BuscarTodosUsuarios: IBizUsuario;
begin
Result : = FDataModule. GetUsuarios;
end ;
function TUsuariosController. BuscarUsuario( const AIDUser: Integer ) : IBizUsuario;
begin
Result : = FDataModule. GetUsuario( AIDUser) ;
end ;
function TUsuariosController. CambiarPassword( const AIDUser: Integer ;
const ANewPassword: String ) : Boolean ;
begin
FUserControl. ChangePassword( AIDUser, ANewPassword) ;
Result : = True ;
end ;
function TUsuariosController. CambiarPassword( const AIDUser: Integer ) : Boolean ;
var
AUser : IBizUsuario;
AEditor : TfEditorCambiarPassword;
begin
Result : = False ;
AUser : = FDataModule. GetUsuario( AIDUser) ;
if Assigned( AUser) then
begin
AUser. Active : = True ;
AEditor : = TfEditorCambiarPassword. Create( NIL ) ;
if Assigned( AEditor) then
try
AEditor. Controller : = Self;
AEditor. Usuario : = AUser;
AEditor. CambioObligatorio : = False ;
if ( Length( Trim( AUser. PASS) ) = 0 ) then
AEditor. EditAtu. Enabled : = False ;
if ( AEditor. ShowModal = mrOk) then
Result : = CambiarPassword( AIDUser, AEditor. EditNova. Text )
else
Result : = False ;
finally
AEditor. Release;
AUser. Active : = False ;
AUser : = NIL ;
end ;
end ;
end ;
function TUsuariosController. ComprobarUsuario( const User,
Password: String ) : Boolean ;
begin
Result : = FUserControl. VerificaLogin( User, Password) ;
if not Result then
begin
if User = 'admin' then
begin
if not FUserControl. ExisteUsuario( 'admin' ) then
begin
FUserControl. AddUser( 'admin' , '1' , 'Administrador' , 'admin@correo.net' , 0 , 0 , 3 0 , True ) ;
Result : = ComprobarUsuario( User, Password) ;
end ;
end ;
end ;
{ if Result then
// Para que el servidor cree la sesi<73> n del usuario
FDataModule. Login( User, Password) ; }
end ;
constructor TUsuariosController. Create;
begin
inherited ;
AsignarDataModule;
FCurrentUser : = NIL ;
FUserControl : = TUserControl. Create( nil ) ;
FUsarPasswordsSeguras : = False ;
InicializarUserControl;
end ;
function TUsuariosController. CreateEditor( const AName: String ; const IID: TGUID; out Intf) : Boolean ;
begin
Result : = Supports( EditorRegistry. CreateEditor( AName) , IID, Intf) ;
end ;
function TUsuariosController. DarListaPerfilesUsuario: TStringList;
var
APerfilesUsuario: IBizPerfilUsuario;
begin
APerfilesUsuario : = FDataModule. GetPerfiles;
APerfilesUsuario. DataTable. Active : = True ;
Result : = TStringList. Create;
try
with Result do
begin
APerfilesUsuario. DataTable. First;
while not APerfilesUsuario. DataTable. EOF do
begin
Add( Format( '%s=%d' , [ APerfilesUsuario. USERNAME, APerfilesUsuario. ID] ) ) ;
APerfilesUsuario. DataTable. Next;
end ;
end ;
finally
APerfilesUsuario : = NIL ;
end ;
end ;
function TUsuariosController. DarListaUsuarios: TStringList;
var
AUsuarios: IBizUsuario;
begin
AUsuarios : = FDataModule. GetUsuarios;
AUsuarios. DataTable. Active : = True ;
Result : = TStringList. Create;
try
with Result do
begin
AUsuarios. DataTable. First;
while not AUsuarios. DataTable. EOF do
begin
Add( Format( '%s=%d' , [ AUsuarios. USERNAME, AUsuarios. ID] ) ) ;
AUsuarios. DataTable. Next;
end ;
end ;
finally
AUsuarios : = NIL ;
end ;
end ;
destructor TUsuariosController. Destroy;
begin
FreeAndNIL( FUserControl) ;
FDataModule : = NIL ;
inherited ;
end ;
function TUsuariosController. EliminarPerfil(
APerfil: IBizPerfilUsuario) : Boolean ;
var
CanDelete: Boolean ;
ErrorMsg: String ;
begin
Result : = False ;
if not Assigned( APerfil) then
raise Exception. Create( 'No hay perfil asignado (EliminarPerfil)' ) ;
if not APerfil. Active then
APerfil. Active : = True ;
if APerfil. DataTable. RecordCount = 0 then
Exit;
if HayUsuarioConPerfil( APerfil. ID) then
begin
//changed by fduenas: PromptDelete_WindowCaption
if MessageBox( Application. Handle, PChar( Format( FUserControl. UserSettings. UsersProfile. PromptDelete, [ APerfil. USERNAME] ) ) ,
PChar( FUserControl. UserSettings. UsersProfile. PromptDelete_WindowCaption) , MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) < > idYes then
Exit;
end ;
CanDelete : = True ;
if Assigned( FUserControl. onDeleteProfile) then
FUserControl. onDeleteProfile( NIL , APerfil. ID, CanDelete, ErrorMsg) ;
if not CanDelete then
begin
MessageDlg( ErrorMSG, mtWarning, [ mbOK] , 0 ) ;
Exit;
end ;
with FUserControl do
begin
DataConnector. UCExecSQL( 'Delete from ' + TableUsers. TableName + ' where ' + TableUsers. FieldUserID + ' = ' + IntToStr( APerfil. ID) ) ;
DataConnector. UCExecSQL( 'Delete from ' + TableRights. TableName + ' where ' + TableRights. FieldUserID + ' = ' + IntToStr( APerfil. ID) ) ;
DataConnector. UCExecSQL( 'Delete from ' + TableRights. TableName + 'EX where ' + TableRights. FieldUserID + ' = ' + IntToStr( APerfil. ID) ) ;
DataConnector. UCExecSQL( 'Update ' + TableUsers. TableName +
' Set ' + TableUsers. FieldProfile + ' = null where ' + TableUsers. FieldUserID + ' = ' + IntToStr( APerfil. ID) ) ;
end ;
Result : = True ;
end ;
function TUsuariosController. EliminarPerfil( const AIDPerfil: integer ) : Boolean ;
begin
Result : = EliminarPerfil( FDataModule. GetPerfil( AIDPerfil) ) ;
end ;
function TUsuariosController. EliminarUsuario( AUser: IBizUsuario) : Boolean ;
begin
if not Assigned( AUser) then
raise Exception. Create( 'No hay usuario asignado (EliminarUsuario)' ) ;
if not AUser. Active then
AUser. Active : = True ;
if AUser. DataTable. RecordCount > 0 then
Result : = EliminarUsuario( AUser. ID)
else
Result : = False ;
end ;
function TUsuariosController. EliminarUsuario( const AIDUser: integer ) : Boolean ;
begin
FUserControl. DataConnector. UCExecSQL( 'Delete from ' + FUserControl. TableRights. TableName + ' where ' + FUserControl. TableRights. FieldUserID + ' = ' + IntToStr( AIDUser) ) ;
FUserControl. DataConnector. UCExecSQL( 'Delete from ' + FUserControl. TableUsers. TableName + ' where ' + FUserControl. TableUsers. FieldUserID + ' = ' + IntToStr( AIDUser) ) ;
Result : = True ;
end ;
function TUsuariosController. GetCriptografia: TUCCriptografia;
begin
case FUserControl. Criptografia of
cPadrao: Result : = ucStandard;
cMD5: Result : = ucMD5;
else
Result : = ucStandard;
end ;
end ;
function TUsuariosController. GetCurrentUser: IBizUsuario;
begin
if not Assigned( FCurrentUser) or ( FCurrentUser. ID < > FUserControl. CurrentUser. UserID) then
FCurrentUser : = BuscarUsuario( FUserControl. CurrentUser. UserID) ;
if not FCurrentUser. Active then
FCurrentUser. Active : = True ;
Result : = FCurrentUser;
end ;
function TUsuariosController. GetMaxIntentosLogin: Integer ;
begin
Result : = FUserControl. Login. MaxLoginAttempts;
end ;
function TUsuariosController. GetUsarPasswordsSeguras: Boolean ;
begin
Result : = FUsarPasswordsSeguras;
end ;
function TUsuariosController. GuardarPerfil( APerfil: IBizPerfilUsuario) : Boolean ;
begin
if not Assigned( APerfil) then
raise Exception. Create( 'No hay perfil asignado (GuardarPerfil)' ) ;
if APerfil. EsNuevo then
Result : = AnadirPerfil( APerfil)
else
Result : = ModificarPerfil( APerfil) ;
end ;
function TUsuariosController. GuardarUsuario( AUser: IBizUsuario) : Boolean ;
begin
if not Assigned( AUser) then
raise Exception. Create( 'No hay usuario asignado (GuardarUsuario)' ) ;
if AUser. EsNuevo then
Result : = AnadirUsuario( AUser)
else
Result : = ModificarUsuario( AUser) ;
end ;
function TUsuariosController. HayUsuarioConPerfil(
const AIDPerfil: integer ) : Boolean ;
var
TempDS: TDataset;
begin
try
TempDS : = FUserControl. DataConnector. UCGetSQLDataset( 'Select ' + FUserControl. TableUsers. FieldUserID + ' as IdUser from ' +
FUserControl. TableUsers. TableName +
' Where ' + FUserControl. TableUsers. FieldTypeRec + ' = ' + QuotedStr( 'U' ) +
' AND ' + FUserControl. TableUsers. FieldProfile + ' = ' + IntToStr( AIDPerfil) ) ;
Result : = ( TempDS. FieldByName( 'IdUser' ) . AsInteger > 0 ) ;
TempDS. Close;
finally
FreeAndNil( TempDS) ;
end ;
end ;
procedure TUsuariosController. InicializarUserControl;
begin
with FUserControl do
begin
ApplicationID : = AppFactuGES. AppName;
AutoStart : = False ;
Criptografia : = cMD5;
CheckValidationKey : = True ;
RecogerConfiguracion;
end ;
FDataModule. InicializarUserControl( FUserControl) ;
end ;
procedure TUsuariosController. Logoff;
begin
FUserControl. Logoff;
end ;
function TUsuariosController. ModificarPerfil(
APerfil: IBizPerfilUsuario) : Boolean ;
begin
Result : = False ;
if not Assigned( APerfil) then
raise Exception. Create( 'No hay perfil asignado (ModificarPerfil)' ) ;
if ValidarPerfil( APerfil) then
begin
ShowHourglassCursor;
try
with FUserControl do
begin
DataConnector. UCExecSQL( Format( 'UPDATE %s SET %s = %s WHERE %s = %d' ,
[ TableUsers. TableName,
TableUsers. FieldUserName,
QuotedStr( APerfil. USERNAME) ,
TableUsers. FieldUserID,
APerfil. ID] ) ) ;
end ;
Result : = True ;
finally
HideHourglassCursor;
end ;
end ;
end ;
function TUsuariosController. ModificarUsuario( AUser: IBizUsuario) : Boolean ;
begin
Result : = False ;
if not Assigned( AUser) then
raise Exception. Create( 'No hay usuario asignado (ModificarUsuario)' ) ;
if ValidarUsuario( AUser) then
begin
ShowHourglassCursor;
try
FUserControl. ChangeUser( AUser. ID, AUser. LOGIN, AUser. USERNAME, AUser. EMAIL,
AUser. ID_PERFIL, AUser. BLOQUEADO , AUser. USERDAYSSUN, ( AUser. PRIVILEGED = 1 ) ) ;
Result : = True ;
{ TODO -oLuiz -cUpgrade : Consertar a Senha para poder avisar MD5 }
{ if ( Assigned( MailUserControl) ) and ( MailUserControl. AlteraUsuario. Ativo) then
try
MailUserControl. EnviaEmailAlteraUsuario( vNome,
vLogin,
TfrmCadastrarUsuario( Self. Owner) . FDataSetCadastroUsuario. FieldByName( 'SENHA' ) . AsString,
vEmail,
IntToStr( vPerfil) ,
EncryptKey) ;
except
on E: Exception do
Log( E. Message , 2 ) ;
end ; }
finally
HideHourglassCursor;
end ;
end ;
end ;
function TUsuariosController. NuevoPerfil: IBizPerfilUsuario;
var
APerfil : IBizPerfilUsuario;
begin
APerfil : = FDataModule. NuevoPerfil;
APerfil. DataTable. Active : = True ;
APerfil. Insert;
Result : = APerfil;
end ;
function TUsuariosController. NuevoUsuario: IBizUsuario;
var
AUsuario : IBizUsuario;
begin
AUsuario : = FDataModule. NuevoUsuario;
AUsuario. DataTable. Active : = True ;
AUsuario. Insert;
Result : = AUsuario;
end ;
procedure TUsuariosController. RecibirAviso( ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable) ;
begin
inherited ;
//
end ;
procedure TUsuariosController. RecogerConfiguracion;
begin
with FUserControl do
begin
Login. MaxLoginAttempts : = AppFactuGES. Configuracion. GetSettingAsInteger( teXML, 'MaxLoginAttempts' , 3 ) ;
UserPasswordChange. ForcePassword : = AppFactuGES. Configuracion. GetSettingAsBoolean( teXML, 'ForcePassword' , True ) ;
UserPasswordChange. MinPasswordLength : = AppFactuGES. Configuracion. GetSettingAsInteger( teXML, 'MinPasswordLength' , 3 ) ;
end ;
end ;
procedure TUsuariosController. SetMaxIntentosLogin( const Value: Integer ) ;
begin
FUserControl. Login. MaxLoginAttempts : = Value;
end ;
procedure TUsuariosController. SetUsarPasswordsSeguras( const Value: Boolean ) ;
begin
FUsarPasswordsSeguras : = Value;
end ;
procedure TUsuariosController. _ShowChangePassword;
begin
FUserControl. ShowChangePassword;
end ;
procedure TUsuariosController. _ShowLogManager;
begin
FUserControl. ShowLogManager;
end ;
procedure TUsuariosController. _ShowProfileManager;
begin
FUserControl. ShowProfileManager;
end ;
function TUsuariosController. ValidarPassword( const APassword : string ;
const ALogin : String ; const ANombre: String ; out AMsg : String ) : boolean ;
begin
Result : = False ;
AMsg : = '' ;
RecogerConfiguracion;
if ( FUserControl. UserPasswordChange. ForcePassword) then
begin
if ( Length( Trim( APassword) ) = 0 ) then
AMsg : = FUserControl. UserSettings. CommonMessages. ChangePasswordError. PasswordRequired
else
if ( Length( Trim( APassword) ) < FUserControl. UserPasswordChange. MinPasswordLength) then
AMsg : = Format( FUserControl. UserSettings. CommonMessages. ChangePasswordError. MinPasswordLength, [ FUserControl. UserPasswordChange. MinPasswordLength] )
else
if FUsarPasswordsSeguras and ( Pos( LowerCase( APassword) , 'abcdeasdfqwerzxcv1234567890321654987test' + LowerCase( ALogin) + LowerCase( AMsg) ) > 0 ) then
AMsg : = FUserControl. UserSettings. CommonMessages. ChangePasswordError. InvalidNewPassword
else
Result : = True ;
end
else
Result : = True ;
end ;
function TUsuariosController. ValidarPerfil( APerfil: IBizPerfilUsuario) : Boolean ;
begin
if not Assigned( APerfil) then
raise Exception. Create ( 'Perfil no asignado (ValidarPerfil)' ) ;
if ( APerfil. DataTable. State in dsEditModes) then
APerfil. DataTable. Post;
if Length( APerfil. USERNAME) = 0 then
raise Exception. Create( 'Debe indicar el nombre del perfil.' ) ;
Result : = True ;
end ;
function TUsuariosController. ValidarUsuario( AUser: IBizUsuario) : Boolean ;
begin
if not Assigned( AUser) then
raise Exception. Create ( 'Usuario no asignado (ValidarUsuario)' ) ;
if ( AUser. DataTable. State in dsEditModes) then
AUser. DataTable. Post;
if Length( AUser. USERNAME) = 0 then
raise Exception. Create( 'Debe indicar el nombre completo del usuario.' ) ;
if Length( AUser. LOGIN) = 0 then
raise Exception. Create( 'Debe indicar un login para el usuario.' ) ;
Result : = True ;
end ;
procedure TUsuariosController. VerPerfil( const AIDPerfil: Integer ) ;
var
FPerfil : IBizPerfilUsuario;
begin
FPerfil : = FDataModule. GetPerfil( AIDPerfil) ;
VerPerfil( FPerfil) ;
end ;
procedure TUsuariosController. VerPerfil( APerfil: IBizPerfilUsuario) ;
var
AEditor : IEditorPerfilUsuario;
begin
if not Assigned( APerfil) then
raise Exception. Create( 'Perfil no asignado (VerPerfil)' ) ;
APerfil. Active : = True ;
CreateEditor( 'EditorPerfilUsuario' , IEditorPerfilUsuario, AEditor) ;
if Assigned( AEditor) then
try
AEditor. Controller : = Self; //OJO ORDEN MUY IMPORTANTE
AEditor. PerfilUsuario : = APerfil;
AEditor. ShowModal;
finally
AEditor. Release;
AEditor : = NIL ;
end ;
end ;
procedure TUsuariosController. VerPerfiles;
var
AEditor : IEditorPerfilesUsuario;
APerfilesUsuario: IBizPerfilUsuario;
begin
APerfilesUsuario : = FDataModule. GetPerfiles;
if Assigned( APerfilesUsuario) then
begin
APerfilesUsuario. Active : = True ;
CreateEditor( 'EditorPerfilesUsuario' , IEditorPerfilesUsuario, AEditor) ;
if Assigned( AEditor) then
with ( AEditor as IEditorPerfilesUsuario) do
begin
Controller : = Self; //OJO ORDEN MUY IMPORTANTE
PerfilesUsuario : = APerfilesUsuario;
ShowEmbedded;
end ;
end ;
end ;
procedure TUsuariosController. VerUsuario( const AIDUser: Integer ) ;
var
FUsuario : IBizUsuario;
begin
FUsuario : = FDataModule. GetUsuario( AIDUser) ;
VerUsuario( FUsuario) ;
end ;
procedure TUsuariosController. VerUsuario( AUser: IBizUsuario) ;
var
AEditor : IEditorUsuario;
begin
if not Assigned( AUser) then
raise Exception. Create( 'Usuario no asignado (VerUsuario)' ) ;
AUser. Active : = True ;
CreateEditor( 'EditorUsuario' , IEditorUsuario, AEditor) ;
if Assigned( AEditor) then
try
AEditor. Controller : = Self; //OJO ORDEN MUY IMPORTANTE
AEditor. Usuario : = AUser;
AEditor. ShowModal;
finally
AEditor. Release;
AEditor : = NIL ;
end ;
end ;
procedure TUsuariosController. VerUsuarios;
var
AEditor : IEditorUsuarios;
FUsuarios : IBizUsuario;
begin
FUsuarios : = FDataModule. GetUsuarios;
if Assigned( FUsuarios) then
begin
FUsuarios. Active : = True ;
CreateEditor( 'EditorUsuarios' , IEditorUsuarios, AEditor) ;
if Assigned( AEditor) then
with ( AEditor as IEditorUsuarios) do
begin
Controller : = Self; //OJO ORDEN MUY IMPORTANTE
Usuarios : = FUsuarios;
ShowEmbedded;
end ;
end ;
end ;
procedure TUsuariosController. _ShowUserManager;
begin
FUserControl. ShowUserManager;
end ;
function TUsuariosController. StartLogin : Boolean ;
var
AEditor : IEditorLogin;
begin
Result : = False ;
AEditor : = NIL ;
CreateEditor( 'EditorLogin' , IEditorLogin, AEditor) ;
if Assigned( AEditor) then
try
AEditor. Controller : = Self;
Result : = ( AEditor. ShowModal = mrOk) ;
finally
AEditor. Release;
AEditor : = NIL ;
end ;
end ;
end .