コード例 #1
0
        public ActionResult Login(FrmLogin login)
        {
            var priv = new Privacidad();

            if (login.Usuario == null && login.Contraseña == null)
            {
                login.Usuario    = login.Usuario_Eng;
                login.Contraseña = login.Contraseña_Eng;
            }

            var ln  = new NegocioCuenta();
            var seg = new Privacidad();

            // Traduce páginas de LOGIN.
            TraducirPagina((String)Session["IdiomaApp"]);

            // Usuario con Sesión activa.
            if (ln.ValidarSesionActiva(login.Usuario))
            {
                Session["ErrorLogin"] = ViewBag.ERROR_LOGIN_SESION_ACTIVA;
                return(RedirectToAction("Login"));
            }

            Session["IdUsuario"]          = null;
            Session["NombreUsuario"]      = null;
            Session["PerfilUsuario"]      = null;
            Session["EmailUsuario"]       = null;
            Session["CodUsuario"]         = null;
            Session["DireccionUsuario"]   = null;
            Session["RazonSocialUsuario"] = null;

            Session["UsrLogin"] = null;

            Session["ErrorLogin"] = null;
            Session["Excepcion"]  = null;

            // Usuario incorrecto, solo devuelvo el error al Login.
            if (ln.ValidarUsuario(login.Usuario))
            {
                Session["ErrorLogin"] = ViewBag.ERROR_LOGIN_USUARIO_PSW_INVALIDOS;
                return(RedirectToAction("Login"));
            }

            // Valido que la cuenta no este bloqueada.
            if (ln.ValidarBloqueoCuenta(login.Usuario))

            {
                return(RedirectToAction("CuentaBloqueada"));
            }


            // Valido que la contraseña sea correcta, en caso negativo incremento intentos fallidos.
            if (ln.ValidarUsuarioPsw(login.Usuario, login.Contraseña))
            {
                Session["ErrorLogin"] = ViewBag.ERROR_LOGIN_USUARIO_PSW_INVALIDOS;

                //Sumo intento fallido.
                if (ln.SumarIntentoFallido(login.Usuario) == 3)
                {
                    ln.BloquearCuentaUsuario(login.Usuario); //Bloqueo cuenta de Usuario.

                    var aud = new Auditoria();
                    aud.grabarBitacora(DateTime.Now, "SISTEMA", "BLOQUEO USUARIO", "ERROR LEVE", "Se bloqueó al Usuario: " + login.Usuario);


                    return(RedirectToAction("CuentaBloqueada"));
                }

                return(RedirectToAction("Login"));
            }

            var usrSesion = ln.Autenticar(login);

            //Error en la base de datos.
            if (usrSesion.Nombre == null || usrSesion.PerfilUsr.Descripcion == null)

            {
                var aud = new Auditoria();
                aud.grabarBitacora(DateTime.Now, "SISTEMA", "ERROR LOGIN", "ERROR LEVE", "Error al intentar ingresar al sistema.");
                return(RedirectToAction("Index", "Home"));
            }

            //Usuario Logueado correctamente, se mapean las variables de Sesión.

            Session["IdUsuario"]          = usrSesion.Id.ToString();
            Session["NombreUsuario"]      = usrSesion.Nombre;
            Session["RazonSocialUsuario"] = usrSesion.RazonSocial;
            Session["PerfilUsuario"]      = usrSesion.PerfilUsr.Descripcion;
            Session["EmailUsuario"]       = usrSesion.Email;
            Session["CodUsuario"]         = usrSesion.Id;
            Session["DireccionUsuario"]   = usrSesion.Direccion;
            Session["IdiomaApp"]          = usrSesion.Idioma.Abreviacion;

            Session["UsrLogin"] = usrSesion.Usr;

            HttpCookie cookie = new HttpCookie("UsrLogin");

            cookie.Value = usrSesion.Usr;
            Response.Cookies.Add(cookie);

            //Activo la Sesión.
            //ln.ActivarSesionCuentaUsuario(usrSesion.Usr);

            return(RedirectToAction("Index", "Home"));
        }