public void UpdatePassword(Usuario usuario, bool expired = false) { try { var userDb = _crudUsuario.RetrieveAuth <Usuario>(usuario); if (userDb == null) { throw new BusinessException(204); } var mngConfig = new ConfiguracionManager(); var config = mngConfig.RetrieveConfiguracion(); // Validate password length if (usuario.Password.Length < config.CantCaracteresContrasena) { throw new BusinessException(206); } usuario.PasswordSalt = userDb.PasswordSalt; usuario.PasswordHash = GenerateHash(usuario.Password, usuario.PasswordSalt); usuario.PasswordLastSet = DateTime.Now; // Validate password has not been used before. var newPassword = new HistorialContrasena { Fecha = usuario.PasswordLastSet, Email = usuario.Email, PasswordHash = usuario.PasswordHash, Count = config.CantContrasenasAnteriores }; var historial = _crudContrasena.Retrieve <HistorialContrasena>(newPassword); if (historial != null) { throw new BusinessException(205); } _crudUsuario.UpdatePassword(usuario); // Record password has in history _crudContrasena.Create(newPassword); //Clean up password history _crudContrasena.Delete(newPassword); } catch (Exception e) { ExceptionManager.GetInstance().Process(e); } }
public Usuario ValidateUser(Usuario usuario) { Usuario usuarioDb = null; try { usuarioDb = _crudUsuario.RetrieveAuth <Usuario>(usuario); if (usuarioDb == null) // Does not exist { throw new BusinessException(208); } if (!usuarioDb.Estado.Equals("Activo")) // Not Active { throw new BusinessException(211); } var mngConfig = new ConfiguracionManager(); var config = mngConfig.RetrieveConfiguracion(); if (usuarioDb.PasswordLastSet.AddDays(config.DiasExpiracionContrasena) < DateTime.Today) { throw new BusinessException(209); //Expired password } usuario.PasswordHash = GenerateHash(usuario.Password, usuarioDb.PasswordSalt); if (!usuario.PasswordHash.Equals(usuarioDb.PasswordHash)) // Wrong password { throw new BusinessException(208); } // clean the object usuarioDb.PasswordHash = null; usuarioDb.PasswordSalt = null; usuarioDb.ResetToken = null; } catch (Exception e) { ExceptionManager.GetInstance().Process(e); } return(usuarioDb); // Ok }
public Usuario Retrieve(Usuario usuario) { Usuario usuarioDb = null; try { usuarioDb = _crudUsuario.Retrieve <Usuario>(usuario); if (usuarioDb == null) { throw new BusinessException(204); } var mngConfig = new ConfiguracionManager(); var config = mngConfig.RetrieveConfiguracion(); usuarioDb.PasswordExpiration = usuarioDb.PasswordLastSet.AddDays(config.DiasExpiracionContrasena); } catch (Exception e) { ExceptionManager.GetInstance().Process(e); } return(usuarioDb); }