public ResultadoOperacionDto ValidarNumeroAutenticaciones(SeguridadDto objSeguridadDTO, Usuario usuarioDTO) { var resultado = new ResultadoOperacionDto(); try { var valido = false; if (usuarioDTO != null) { if (usuarioDTO.IntentosErroneosLogin < Int32.Parse(objSeguridadDTO.NumeroAutentificaciones)) { valido = true; } } resultado.InformacionExtra = valido; resultado.Resultado = valido; } catch (Exception exception) { LogUtil.Error(exception); resultado.Resultado = false; resultado.Mensaje = exception.Message; resultado.InformacionExtra = exception; } return(resultado); }
public ResultadoOperacionDto ObtenerParametrosConfiguracionSeguridad() { var resultado = new ResultadoOperacionDto(); try { var seguridad = new SeguridadDto(); seguridad.ExpresionValidacionPassword = ConfigurationManager.AppSettings["expresionValidacionPassword"]; seguridad.MensajeValidacion = ConfigurationManager.AppSettings["mensajeValidacion"]; seguridad.NumeroAutentificaciones = ConfigurationManager.AppSettings["numeroAutentificaciones"]; seguridad.NumeroDiasValidos = ConfigurationManager.AppSettings["numeroDiasValidos"]; seguridad.NumeroAutentiticacionesValidasAntesModificacion = ConfigurationManager.AppSettings["numeroAutentiticacionesValidasAntesModificacion"]; seguridad.NumeroDiasValidosAntesModificacion = ConfigurationManager.AppSettings["numeroDiasValidosAntesModificacion"]; seguridad.NumeroPasswordCiclo = ConfigurationManager.AppSettings["numeroPasswordCiclo"]; resultado.Resultado = true; resultado.InformacionExtra = seguridad; } catch (Exception exception) { LogUtil.Error(exception); resultado.Resultado = false; resultado.InformacionExtra = exception; } return(resultado); }
public ResultadoOperacionDto ValidarDiasAutenticaciones(SeguridadDto seguridad, Usuario usuario) { var resultado = new ResultadoOperacionDto(); try { resultado.InformacionExtra = false; var hoy = DateTime.Today; if (usuario != null) { var fechaLimite = usuario.VigenciaPassword.AddDays(Int32.Parse(seguridad.NumeroDiasValidos)); if (hoy < fechaLimite) { resultado.InformacionExtra = true; } } } catch (Exception exception) { LogUtil.Error(exception); resultado.Resultado = false; resultado.Mensaje = exception.Message; resultado.InformacionExtra = exception; } return(resultado); }
public async Task RegisterUser(SeguridadDto seguridadDto) { Seguridad _seguridad = new(); Usuario usuario = new(); string password = Helper.STDFunctions.GenerarContraseña(); _seguridad.UserName = seguridadDto.Nombres; _seguridad.User = seguridadDto.User; _seguridad.Password = _passwordService.Hash(password); _seguridad.Activo = seguridadDto.IsActive; _seguridad.Email = seguridadDto.Email; _seguridad.Role = seguridadDto.Role; usuario.Nombres = seguridadDto.Nombres; usuario.Apellidos = seguridadDto.Apellidos; usuario.Email = seguridadDto.Email; usuario.IsActive = true; await _unitOfWork.SeguridadRepository.Add(_seguridad).ConfigureAwait(false); await _unitOfWork.UsuarioRepository.Add(usuario).ConfigureAwait(false); _emailService.Send(seguridadDto.Email, "Password usuario", $"<p>Contraseña: {password} </p>"); await _unitOfWork.SaveChangesAsync().ConfigureAwait(false); }
public ResultadoOperacionDto ModificarPassword(ref Usuario usuarioParam, SeguridadDto objSeguridadDTO, string password) { var resultado = new ResultadoOperacionDto(); var usuario = Repository.GetById(usuarioParam.IdUsuario); if (usuario != null && usuario.Password != null) { var passwEncriptado = SeguridadDto.EncriptarPassword(password); usuario.Password = passwEncriptado; usuario.VigenciaPassword = DateTime.Today.AddDays(60); usuario.Bloqueado = false; usuario.IntentosErroneosLogin = 0; if (!String.IsNullOrEmpty(usuario.HistoricoPassword)) { var split = new string[1]; split[0] = "@@@"; var passwAnteriores = usuario.HistoricoPassword.Split(split, StringSplitOptions.None); var queuePasswords = new Queue <string>(passwAnteriores); while (queuePasswords.Count >= Int32.Parse(objSeguridadDTO.NumeroPasswordCiclo)) { queuePasswords.Dequeue(); //Elimina la contraseña mas antigua } queuePasswords.Enqueue(passwEncriptado); usuario.HistoricoPassword = String.Empty; foreach (var queuePassword in queuePasswords) { if (String.IsNullOrWhiteSpace(queuePassword)) { continue; } usuario.HistoricoPassword += queuePassword + "@@@"; } } else { usuario.HistoricoPassword = passwEncriptado; } Repository.Update(usuario); resultado.Resultado = true; resultado.Mensaje = MensajesServicios.ContraseñaModificada; var informacionAuditoria = new InformacionAuditoriaDto { Accion = ConstantsAccionAuditable.Actualizar, Empresa = null, IdUsuario = usuario.IdUsuario, Modulo = ConstantsModulo.Login, Registro = MensajesServicios.ContrasenaModificada }; resultado.InformacionAuditoria = informacionAuditoria; return(resultado); } else { resultado.Resultado = false; resultado.Mensaje = MensajesServicios.SinDatosUsuario; } return(resultado); }
public async Task <IActionResult> Post(SeguridadDto seguridadDto) { var seguridad = _mapper.Map <Seguridad>(seguridadDto); await _seguridadService.RegisterUser(seguridad); seguridadDto = _mapper.Map <SeguridadDto>(seguridad); var respose = new ApiResponse <SeguridadDto>(seguridadDto); return(Ok(seguridad)); }
public async Task <IActionResult> Post(SeguridadDto seguridadDto) { await _seguridadService.RegisterUser(seguridadDto).ConfigureAwait(false); ApiResponse <string> response = new ApiResponse <string>() { Succeeded = true, Message = "Usuario Registrado" }; return(Ok(response)); }
public ResultadoOperacionDto RegistrarAcceso(Usuario usuarioDto, SeguridadDto seguridad, bool isExitoso) { var resultado = new ResultadoOperacionDto(); try { var usuario = Repository.ObtenerUsuarioPorId(usuarioDto.IdUsuario); if (isExitoso) { usuario.IntentosErroneosLogin = 0; resultado.Resultado = true; } else { usuario.IntentosErroneosLogin = usuario.IntentosErroneosLogin + 1; if (!(bool)ValidarNumeroAutenticaciones(seguridad, usuario).InformacionExtra) { usuario.Bloqueado = true; resultado.Resultado = false; resultado.Mensaje = MensajesServicios.IntentosExcedidos; } else { resultado.Resultado = false; resultado.Mensaje = MensajesServicios.ContrasenaIncorrecta; } } Repository.GuardarUsuario(usuario); } catch (Exception exception) { LogUtil.Error(exception); resultado.Resultado = false; resultado.Mensaje = exception.Message; resultado.InformacionExtra = exception; } //var informacionAuditoria = new InformacionAuditoriaDto //{ // Accion = ConstantsAccionAuditable.RegistroAutentificacion, // Empresa = null, // IdUsuario = usuario.IdUsuario, // Modulo = ConstantsModulo.Login, // Registro = MensajesServicios.RegistroAcceso //}; //resultado.InformacionAuditoria = informacionAuditoria; return(resultado); }
public async Task ValidarUsuario_No_Exitoso() { var service = this.CreateService(); const string contrasena = "10000.feUzERp1/cWLzjxJD6dl+g==.XSCcROLL98o00jrC7xWbariI4lz1V1plbUECiBdT3Cw="; var usuario = new SeguridadDto { Usuario = "Pepito1", Contrasena = "Master12481*" }; var seguridad = new SeguridadMicroServicio { Contrasena = contrasena, Id = 1, Usuario = "Pepito" }; mockContrasenaService.Setup(s => s.Check(contrasena, usuario.Contrasena)).Returns(false); mockUnitOfWork.Setup(s => s.SeguridadRepository.ValidarUsuario(usuario)).ReturnsAsync(seguridad); var result = await service.ValidarUsuario(usuario); Assert.AreEqual(null, result); this.mockRepository.VerifyAll(); }
public IHttpActionResult CambiarContrasena() { string passwordAnterior = getFormKeyValue("passwordAnterior"); string passwordNuevo = getFormKeyValue("passwordNuevo"); string passwordConfirmar = getFormKeyValue("passwordConfirmar"); ResultadoOperacionDto resultado = new ResultadoOperacionDto(); if (!string.IsNullOrEmpty(passwordAnterior) && !string.IsNullOrEmpty(passwordNuevo) && !string.IsNullOrEmpty(passwordConfirmar) && SesionActual.Usuario != null) { SeguridadDto seguridadDto = LoginService.ObtenerParametrosConfiguracionSeguridad().InformacionExtra as SeguridadDto; Usuario usuarioDto = UsuarioService.ObtenerUsuarioPorId(SesionActual.Usuario.IdUsuario).InformacionExtra as Usuario; if ((bool)LoginService.VerificaPasswordEncriptado(usuarioDto, passwordAnterior).InformacionExtra) { if ((bool)LoginService.ValidarPasswordContraExpresionRegular(seguridadDto, passwordNuevo).InformacionExtra) { if (!(bool)LoginService.VerificaPasswordYaUsado(usuarioDto, passwordNuevo).InformacionExtra) { LoginService.ModificarPassword(ref usuarioDto, seguridadDto, passwordNuevo); resultado = LoginService.RegistrarAcceso(usuarioDto, seguridadDto, true); if (resultado.Resultado) { resultado.Mensaje = AbaxXbrl.ContraseñaModificada; } } else { resultado.Mensaje = AbaxXbrl.ContraseñaUsada; resultado.InformacionExtra = seguridadDto.NumeroPasswordCiclo; } } else { resultado.Mensaje = AbaxXbrl.ContraseñaNuevaFormato; } } else { resultado.Mensaje = AbaxXbrl.ContraselaAnteriorNoCoincide; } } return(Ok(resultado)); }
public ResultadoOperacionDto ValidarPasswordContraExpresionRegular(SeguridadDto objSeguridadDTO, string password) { var resultado = new ResultadoOperacionDto(); try { var valido = false; if (objSeguridadDTO != null && objSeguridadDTO.ExpresionValidacionPassword != null && !password.Equals("")) { valido = Regex.Match(password, objSeguridadDTO.ExpresionValidacionPassword).Success; } resultado.InformacionExtra = valido; resultado.Resultado = valido; } catch (Exception exception) { LogUtil.Error(exception); resultado.Resultado = false; resultado.Mensaje = exception.Message; resultado.InformacionExtra = exception; } return(resultado); }
public IHttpActionResult CambioPassword() { ResultadoOperacionDto resultado = new ResultadoOperacionDto(); long idUsuario = Convert.ToInt64(getFormKeyValue("idUsuario")); string passwordAnterior = getFormKeyValue("passwordAnterior"); string passwordNuevo = getFormKeyValue("passwordNuevo"); string passwordConfirmar = getFormKeyValue("passwordConfirmar"); try { if (!string.IsNullOrEmpty(passwordAnterior) && !string.IsNullOrEmpty(passwordNuevo) && !string.IsNullOrEmpty(passwordConfirmar) && Convert.ToInt64(idUsuario) > 0) { SeguridadDto seguridadDto = LoginService.ObtenerParametrosConfiguracionSeguridad().InformacionExtra as SeguridadDto; Usuario usuarioDto = UsuarioService.ObtenerUsuarioPorId(idUsuario).InformacionExtra as Usuario; if ((bool)LoginService.VerificaPasswordEncriptado(usuarioDto, passwordAnterior).InformacionExtra) { if ((bool)LoginService.ValidarPasswordContraExpresionRegular(seguridadDto, passwordNuevo).InformacionExtra) { if (!(bool)LoginService.VerificaPasswordYaUsado(usuarioDto, passwordNuevo).InformacionExtra) { LoginService.ModificarPassword(ref usuarioDto, seguridadDto, passwordNuevo); resultado = LoginService.RegistrarAcceso(usuarioDto, seguridadDto, true); if (resultado.Resultado) { var empresas = UsuarioService.ObtenerEmpresasPorIdEmpresaIdUsuario(null, usuarioDto.IdUsuario).InformacionExtra as List <UsuarioEmpresa>; Session sesion = new Session(); switch (empresas.Count) { case 0: resultado.Resultado = false; resultado.Mensaje = "MENSAJE_ERROR_AUTENTICAR_USUARIO_SIN_EMISORA"; break; case 1: var usuarioEmpresa = empresas.First(); sesion.IdEmpresa = usuarioEmpresa.IdEmpresa; sesion.GrupoEmpresa = usuarioEmpresa.Empresa.GrupoEmpresa; var entidades = UsuarioService.CargarFacultades(usuarioDto.IdUsuario, usuarioEmpresa.IdEmpresa).InformacionExtra as List <Facultad>; var facultades = CopiadoUtil.Copia(entidades); sesion.Facultades = facultades.ToList(); resultado.Mensaje = string.Empty; resultado.InformacionExtra = sesion; LoginService.RegistrarAccesoAuditoria(usuarioDto.IdUsuario, sesion.IdEmpresa); break; default: resultado.Mensaje = "EmisoraLogin"; break; } } } else { resultado.Mensaje = AbaxXbrl.ContraseñaUsada; resultado.InformacionExtra = seguridadDto.NumeroPasswordCiclo; } } else { resultado.Mensaje = AbaxXbrl.ContraseñaNuevaFormato; } } else { resultado.Mensaje = AbaxXbrl.ContraselaAnteriorNoCoincide; } } } catch (Exception ex) { resultado.Mensaje = ex.Message; resultado.InformacionExtra = ex; resultado.Resultado = false; } return(Ok(resultado)); }