Beispiel #1
0
        /// <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);
            }
        }