/// <summary> /// Ejecuta la autentificación del usuario. /// </summary> /// <param name="email"></param> /// <param name="password"></param> /// <returns>El objeto que contiene todos los datos necesarios para saber si fue un logueo exitoso o no.</returns> public ResultadoOperacionDto Autentificar(string email, string password) { ResultadoOperacionDto resultado = new ResultadoOperacionDto(); string validaLogin = ValidarLogin(email, password); if (!string.IsNullOrEmpty(validaLogin)) { resultado.Resultado = false; resultado.Mensaje = validaLogin; return(resultado); } var resultadoConsulta = LoginService.AutentificarUsuario(email, password); if (!resultadoConsulta.Resultado && !String.IsNullOrWhiteSpace(resultadoConsulta.Excepcion)) { return(resultadoConsulta); } var usuario = resultadoConsulta.InformacionExtra as Usuario; var seguridad = LoginService.ObtenerParametrosConfiguracionSeguridad().InformacionExtra as SeguridadDto; if (usuario != null) { if (usuario.Activo) { if (!usuario.Bloqueado) { Session sesion = new Session(); sesion.Usuario = CopiadoUtil.Copia(usuario); if ((bool)LoginService.ValidarDiasAutenticaciones(seguridad, usuario).InformacionExtra&& usuario.VigenciaPassword >= DateTime.Now) { resultado = LoginService.RegistrarAcceso(usuario, seguridad, true); if (resultado.Resultado) { var empresas = UsuarioService.ObtenerEmpresasPorIdEmpresaIdUsuario(null, usuario.IdUsuario).InformacionExtra as List <UsuarioEmpresa>; 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(usuario.IdUsuario, usuarioEmpresa.IdEmpresa).InformacionExtra as List <Facultad>; var facultades = CopiadoUtil.Copia(entidades); sesion.Facultades = facultades.ToList(); sesion.Ip = GetUserHostAddress(); resultado.Mensaje = string.Empty; LoginService.RegistrarAccesoAuditoria(sesion.Usuario.IdUsuario, sesion.IdEmpresa); break; default: resultado.Mensaje = "EmisoraLogin"; break; } resultado.InformacionExtra = sesion; } return(resultado); } resultado.Resultado = true; resultado.InformacionExtra = sesion; resultado.Mensaje = "CambiarPassword"; return(resultado); } resultado.Mensaje = AbaxXbrl.UsuarioBloqueado; } else { resultado.Mensaje = AbaxXbrl.UsuarioDesactivado; } resultado.Resultado = false; return(resultado); } var u = UsuarioService.BuscarUsuario(email).InformacionExtra as Usuario; if (u != null) { return(LoginService.RegistrarAcceso(u, seguridad, false)); } else { resultado.Resultado = false; resultado.Mensaje = AbaxXbrl.UsuarioNoEncontrado; return(resultado); } }