public ResultBM UpdateUser(UserBM userBm, bool updatePassword = false) { UserDAL userDal = new UserDAL(); DigitVerificatorBLL dvBll = new DigitVerificatorBLL(); ResultBM digitUpdated; ResultBM validation; UserDTO userDto; try { validation = IsValid(userBm); if (validation.IsValid()) { if (updatePassword) { userBm.Password = SecurityHelper.Encrypt(userBm.Password); } string digit = dvBll.CreateDigit(userBm); userDto = new UserDTO(userBm.Id, userBm.Name, userBm.Active, userBm.LanguageId, userBm.PermissionId, userBm.Password, digit); userDal.UpdateUser(userDto); //Corregir: se asume que es solo para el usuario //Ver qué ocurre ante fallo digitUpdated = dvBll.UpdateVerticallDigit(); if (digitUpdated.IsValid()) { return(new ResultBM(ResultBM.Type.OK, "Usuario con id " + userBm.Id + " actualizado correctamente.")); } else { return(digitUpdated); } } else { return(validation); } } catch (Exception exception) { return(new ResultBM(ResultBM.Type.EXCEPTION, SessionHelper.GetTranslation("UPDATING_ERROR") + " " + exception.Message, exception)); } }
/// <summary> /// Crea un usuario. /// </summary> /// <param name="userBm"></param> /// <returns></returns> public ResultBM SaveUser(UserBM userBm) { UserDAL userDal = new UserDAL(); DigitVerificatorBLL dvBll = new DigitVerificatorBLL(); UserDTO userDto; ResultBM digitUpdated; ResultBM validation; try { validation = IsValid(userBm, true); if (validation.IsValid()) { userBm.Password = SecurityHelper.Encrypt(userBm.Password); userBm.Hdv = dvBll.CreateDigit(userBm); userDto = new UserDTO(userBm.Name, userBm.Active, userBm.LanguageId, userBm.PermissionId, userBm.Password, userBm.Hdv); userDal.SaveUser(userDto); digitUpdated = dvBll.UpdateVerticallDigit(); if (digitUpdated.IsValid()) { return(new ResultBM(ResultBM.Type.OK, "Usuario creado: " + userDto.name, new UserBM(userDto))); } else { return(digitUpdated); } } else { return(validation); } } catch (Exception exception) { return(new ResultBM(ResultBM.Type.EXCEPTION, SessionHelper.GetTranslation("SAVING_ERROR") + " " + exception.Message, exception)); } }
public ResultBM DeleteUser(int userId) { try { DigitVerificatorBLL dvBll = new DigitVerificatorBLL(); UserDAL userDal = new UserDAL(); userDal.DeleteUser(userId); ResultBM result = dvBll.UpdateVerticallDigit(); if (result.IsValid()) { return(new ResultBM(ResultBM.Type.OK, "Usuario con id " + userId + " ha sido eliminado satisfactoriamente.")); } else { return(new ResultBM(ResultBM.Type.FAIL, SessionHelper.GetTranslation("UPDATING_ERROR") + " (INTEGRITY)")); } } catch (Exception exception) { return(new ResultBM(ResultBM.Type.EXCEPTION, SessionHelper.GetTranslation("DELETING_ERROR") + " " + exception.Message, exception)); } }
public ResultBM LogIn(string user, string password) { UserBLL userBll = new UserBLL(); UserBM userBm; LanguageBLL languageBll = new LanguageBLL(); LanguageBM languageBm; ProfileBLL profileBll = new ProfileBLL(); ProfileBM profileBm; DigitVerificatorBLL dvBll = new DigitVerificatorBLL(); ResultBM result; try { //1. Validación input result = IsValid(user, password); if (result.IsValid()) { //2. Validación usuario result = userBll.GetUser(user, password); if (result.IsValid()) { log.AddLogInfo("Autenticando", "Usuario " + user + " encontrado en la base de datos.", this); userBm = result.GetValue <UserBM>(); //3. Recuperación de permisos profileBm = profileBll.GetProfile(userBm.PermissionId).GetValue() as ProfileBM; //4. Recuperación de idioma languageBm = languageBll.GetLanguage(userBm.LanguageId); //5. Armado de sesión SessionHelper.StartSession(userBm, profileBm, languageBm); log.AddLogDebug("Creando sesión", "Sesion para el usuario " + user + " creada.", this); //6 Chequeo de consistencia horizontal result = dvBll.IsHorizontallyConsistent(userBm); if (!result.IsValid()) { log.AddLogCritical("Dígito horizontal", "Falló la verificación horizontal al momento de chequear los datos del usuario " + user + ".", this); //Sólo un admin puede continuar no es suficiente con que pueda restaurar result = new ResultBM(ResultBM.Type.CORRUPTED_DATABASE, result.description, null, profileBm.HasPermission("GE999")); } else { //4.2 Chequeo de vertical result = dvBll.IsVerticallyConsistent(); if (!result.IsValid()) { log.AddLogCritical("Dígito vertical", "Falló la verificación vertical al momento de loguear al usuario " + user + ".", this); //Sólo un admin puede continuar no es suficiente con que pueda restaurar result = new ResultBM(ResultBM.Type.CORRUPTED_DATABASE, result.description, null, profileBm.HasPermission("GE999")); } else { log.AddLogInfo("Logueo", "El usuario " + user + " se ha logueado exitosamente.", this); result = new ResultBM(ResultBM.Type.OK, "Inicio de sesión exitoso para el usuario " + user); } } } else { log.AddLogInfo("Autenticando", "Usuario " + user + " no ha sido encontrado en la base de datos.", this); } } } catch (Exception exception) { result = new ResultBM(ResultBM.Type.EXCEPTION, exception.Message, exception, false); } return(result); }