Exemple #1
0
        public ActionResult AsignaUsuarios([Bind(Include = "id_rol,id_usuario")] AsignaUsuarioRolViewModel Rol)
        {
            c_rol c_rol = db.c_rol.Find(Rol.id_rol);

            if (c_rol == null)
            {
                return(HttpNotFound());
            }

            try
            {
                c_rol.c_usuario.Clear();
                if (Rol.id_usuario == null)
                {
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }
                foreach (int id_usr in Rol.id_usuario)
                {
                    c_usuario u = db.c_usuario.Find(id_usr);
                    c_rol.c_usuario.Add(u);
                }
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            catch
            {
                ViewBag.nb_rol = c_rol.nb_rol;
                string sql      = "select id_usuario from c_rol_usuario where id_rol = " + Rol.id_rol;
                var    usuarios = db.Database.SqlQuery <int>(sql).ToArray();
                ViewBag.usuarios = new MultiSelectList(db.c_usuario.OrderBy(x => x.nb_usuario), "id_usuario", "nb_usuario", usuarios);
                return(View(Rol));
            }
        }
Exemple #2
0
        // GET: Inicio
        public ActionResult Index()
        {
            ViewBag.Mensaje = "false";
            c_usuario model = new c_usuario();

            return(View(model));
        }
Exemple #3
0
        public ActionResult AsignaRol([Bind(Include = "id_usuario,id_rol")] AsignaRolUsuarioViewModel Usuario)
        {
            c_usuario c_usuario = db.c_usuario.Find(Usuario.id_usuario);

            if (c_usuario == null)
            {
                return(HttpNotFound());
            }

            try
            {
                c_usuario.c_rol.Clear();
                if (Usuario.id_rol == null)
                {
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }
                foreach (int id_rl in Usuario.id_rol)
                {
                    c_rol r = db.c_rol.Find(id_rl);
                    c_usuario.c_rol.Add(r);
                }
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            catch
            {
                ViewBag.nb_usuario = c_usuario.nb_usuario;
                string sql   = "select id_rol from c_rol_usuario where id_usuario = " + Usuario.id_usuario;
                var    roles = db.Database.SqlQuery <int>(sql).ToArray();
                ViewBag.roles = new MultiSelectList(db.c_rol.OrderBy(x => x.nb_rol), "id_rol", "nb_rol", roles);
                return(View(Usuario));
            }
        }
Exemple #4
0
        public ActionResult Edit(c_usuario c_usuario)
        {
            if (ModelState.IsValid)
            {
                c_usuario user = db.c_usuario.Find(c_usuario.id_usuario);

                if (c_usuario.esta_activo)
                {
                    c_usuario.id_estatus_usuario = 2;
                }
                if (user.password != c_usuario.password)
                {
                    c_usuario.password           = SeguridadUtilidades.SHA256Encripta(c_usuario.password);
                    c_usuario.fe_cambio_password = DateTime.Now;
                    c_usuario.fe_ultimo_acceso   = DateTime.Now;

                    //Agregamos la contraseña al historico del usuario
                    h_password Pass = new h_password();
                    Pass.id_usuario       = c_usuario.id_usuario;
                    Pass.password         = c_usuario.password;
                    Pass.fe_actualizacion = DateTime.Now;
                    db.h_password.Add(Pass);

                    //fijamos el id en 1 para que su estatus sea nuevo, y se requiera un cambio de contraseña
                    if (c_usuario.id_estatus_usuario != 4)
                    {
                        c_usuario.id_estatus_usuario = 1;
                    }
                }
                user.cl_usuario         = c_usuario.cl_usuario;
                user.nb_usuario         = c_usuario.nb_usuario;
                user.password           = c_usuario.password;
                user.email_principal    = c_usuario.email_principal;
                user.no_telefono        = c_usuario.no_telefono;
                user.esta_activo        = c_usuario.esta_activo;
                user.nb_puesto          = c_usuario.nb_puesto;
                user.es_super_usuario   = c_usuario.es_super_usuario;
                user.id_estatus_usuario = c_usuario.id_estatus_usuario;
                /*db.Entry(c_usuario).State = EntityState.Modified;*/
                try
                {
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }
                catch (Exception ex)
                {
                    int ErrorCode = Int32.Parse(ex.InnerException.InnerException.HResult.ToString());

                    if (ErrorCode == -2146232060)
                    {
                        ModelState.AddModelError("es_super_usuario", "Asegurese de que la clave y el Correo electrónico principal no esten en uso.");
                    }
                    System.Console.WriteLine("");
                }
            }
            return(View(c_usuario));
        }
Exemple #5
0
        // GET: Usuario/Delete/5
        public ActionResult Delete(int?id, string redirect = null)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            c_usuario c_usuario = db.c_usuario.Find(id);

            if (c_usuario == null)
            {
                return(HttpNotFound());
            }

            if (redirect != null)
            {
                if (redirect != "bfo")
                {
                    //obtenemos el valor del numero de salto
                    int ns;
                    try
                    {
                        ns = (int)HttpContext.Session["JumpCounter"];
                    }
                    catch
                    {
                        ns = 0;
                    }
                    //Si ns es 0, creamos un nuevo array, agregamos la direccion actual y lo asignamos a la variable "Directions" y establecemos "JumpCounter" = 1
                    if (ns == 0)
                    {
                        List <string> directions = new List <string>();
                        directions.Add(redirect);
                        HttpContext.Session["JumpCounter"] = 1;
                        HttpContext.Session["Directions"]  = directions;
                    }//En caso de que ns sea distinto a 0, obtenemos el Array "Directions", agregamos la direccion actual, aumentamos el contador y salvamos ambas variables globales
                    else
                    {
                        ns++;
                        List <string> directions = (List <string>)HttpContext.Session["Directions"];
                        directions.Add(redirect);
                        HttpContext.Session["JumpCounter"] = ns;
                        HttpContext.Session["Directions"]  = directions;
                    }
                }
            }
            else
            {
                HttpContext.Session["JumpCounter"] = null;
                HttpContext.Session["Directions"]  = null;
            }

            return(View(c_usuario));
        }
Exemple #6
0
 public ActionResult Create(c_usuario c_usuario)
 {
     if (ModelState.IsValid)
     {
         c_usuario.fe_cambio_password = DateTime.Now;
         c_usuario.id_estatus_usuario = 1;
         db.c_usuario.Add(c_usuario);
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.id_estatus_usuario = new SelectList(db.c_estatus_usuario, "id_estatus_usuario", "nb_estatus_usuario", c_usuario.id_estatus_usuario);
     return(View(c_usuario));
 }
Exemple #7
0
        // GET: Usuario/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            c_usuario c_usuario = db.c_usuario.Find(id);

            if (c_usuario == null)
            {
                return(HttpNotFound());
            }
            return(View(c_usuario));
        }
Exemple #8
0
        public ActionResult ChangePassword([Bind(Include = "original_password,password,new_password,repeat_password")] CambiarContrasenaViewModel cambio)
        {
            IdentityPersonalizado ident = (IdentityPersonalizado)ControllerContext.HttpContext.User.Identity;

            if (ModelState.IsValid)
            {
                string     newPass   = SeguridadUtilidades.SHA256Encripta(cambio.new_password);
                c_usuario  c_usuario = db.c_usuario.Find(ident.Id_usuario);
                h_password Pass      = new h_password();

                Pass.id_usuario       = c_usuario.id_usuario;
                Pass.password         = newPass;
                Pass.fe_actualizacion = DateTime.Now;
                db.h_password.Add(Pass);

                c_usuario.password           = newPass;
                c_usuario.id_estatus_usuario = 2;
                c_usuario.fe_cambio_password = DateTime.Now;
                db.SaveChanges();
                HttpContext.Session["SCC"] = "false";
                return(RedirectToAction("Success"));
            }
            string scc;

            try
            {
                scc = HttpContext.Session["SCC"].ToString();
            }
            catch
            {
                scc = "false";
            }

            if (scc == "true")
            {
                ViewBag.Mensaje = "La contraseña actual fue establecida por el administrador, por favor ingrese una nueva.";
            }
            else
            {
                ViewBag.Mensaje = "false";
            }
            return(View());
        }
Exemple #9
0
        public ActionResult Editar(EditarDatosUsuarioViewModel cambio)
        {
            IdentityPersonalizado ident = (IdentityPersonalizado)ControllerContext.HttpContext.User.Identity;

            if (ModelState.IsValid)
            {
                c_usuario c_usuario = db.c_usuario.Find(ident.Id_usuario);
                c_usuario.nb_usuario      = cambio.nb_usuario;
                c_usuario.email_principal = cambio.email_principal;
                c_usuario.no_telefono     = cambio.no_telefono;
                c_usuario.nb_puesto       = cambio.nb_puesto;
                db.SaveChanges();

                FormsAuthentication.SignOut();

                return(RedirectToAction("Index", "Home", ""));
            }
            return(View(cambio));
        }
Exemple #10
0
        public ActionResult AsignaRol(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            c_usuario c_usuario = db.c_usuario.Find(id);

            if (c_usuario == null)
            {
                return(HttpNotFound());
            }
            AsignaRolUsuarioViewModel Usuario = new AsignaRolUsuarioViewModel();

            Usuario.id_usuario = c_usuario.id_usuario;
            ViewBag.nb_usuario = c_usuario.nb_usuario;
            string sql   = "select id_rol from c_rol_usuario where id_usuario = " + Usuario.id_usuario;
            var    roles = db.Database.SqlQuery <int>(sql).ToArray();

            ViewBag.roles = new MultiSelectList(db.c_rol.OrderBy(x => x.nb_rol), "id_rol", "nb_rol", roles);
            return(View(Usuario));
        }
Exemple #11
0
 public UsuarioMembership(c_usuario us)
 {
     Id_usuario         = us.id_usuario;
     Cl_usuario         = us.cl_usuario;
     Nb_usuario         = us.nb_usuario;
     Password           = us.password;
     Email_principal    = us.email_principal;
     No_telefono        = us.no_telefono;
     Esta_activo        = us.esta_activo;
     Es_super_usuario   = us.es_super_usuario;
     Nb_puesto          = us.nb_puesto;
     Id_estatus_usuario = us.id_estatus_usuario; // ?? 2;
     Fe_cambio_password = us.fe_cambio_password ?? DateTime.Now;
     try
     {
         Fe_ultimo_acceso = (DateTime)HttpContext.Current.Session["UltimoAcceso"];
     }
     catch
     {
         Fe_ultimo_acceso = DateTime.Now;
     }
     Funciones = utilidades.ObtenerFunciones(us.id_usuario);
 }
Exemple #12
0
        public ActionResult unlockUser(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            c_usuario c_usuario = db.c_usuario.Find(id);

            if (c_usuario == null)
            {
                return(HttpNotFound());
            }


            c_usuario.id_estatus_usuario       = 2;
            c_usuario.esta_activo              = true;
            c_usuario.fe_cambio_password       = DateTime.Now;
            c_usuario.fe_ultimo_intento_acceso = DateTime.Now;
            c_usuario.no_intento_acceso        = 0;

            db.SaveChanges();

            return(RedirectToAction("Index"));
        }
Exemple #13
0
        public ActionResult Agregar(c_usuario c_usuario)
        {
            if (ModelState.IsValid)
            {
                c_usuario.esta_activo        = true;
                c_usuario.id_estatus_usuario = 1;
                c_usuario.password           = SeguridadUtilidades.SHA256Encripta(c_usuario.password);
                c_usuario.fe_cambio_password = DateTime.Now;
                db.c_usuario.Add(c_usuario);

                try
                {
                    db.SaveChanges();

                    //Agregamos la contraseña al historico del usuario
                    h_password Pass = new h_password();
                    Pass.id_usuario       = c_usuario.id_usuario;
                    Pass.password         = c_usuario.password;
                    Pass.fe_actualizacion = DateTime.Now;
                    db.h_password.Add(Pass);

                    return(RedirectToAction("Index"));
                }
                catch (Exception ex)
                {
                    int ErrorCode = Int32.Parse(ex.InnerException.InnerException.HResult.ToString());

                    if (ErrorCode == -2146232060)
                    {
                        ModelState.AddModelError("es_super_usuario", "Asegurese de que la clave y el Correo electrónico principal no esten en uso.");
                    }
                    System.Console.WriteLine("");
                }
            }
            return(View(c_usuario));
        }
Exemple #14
0
        public ActionResult Index(c_usuario model)
        {
            string pass = model.password;

            var listUsers = db.c_usuario.ToList();

            try
            {
                model = db.c_usuario.Where(u => u.email_principal == model.email_principal).First();
            }
            catch
            {
                ViewBag.Mensaje = "false";
                ViewBag.Error   = "Nombre de usuario o contraseña incorrectos.";
                return(View(model));
            }

            //obtenemos El numero de intentos máximo y el tiempo entre intentos
            int NoIntentos        = Utilidades.Utilidades.GetIntSecurityProp("IntentosMaximos", "3");
            int intentosRestantes = 0;

            //Tomaremos los tiempos en segundos
            int TiempoEntreIntentos     = Utilidades.Utilidades.GetIntSecurityProp("TiempoEntreIntentos", "30") * 60;
            int TiempoDesdeUtimoIntento = (int)DateTime.Now.Subtract(model.fe_ultimo_intento_acceso ?? DateTime.Now).TotalSeconds;
            int TiempoSiguienteIntento  = (TiempoEntreIntentos - TiempoDesdeUtimoIntento) / 60;

            if (TiempoDesdeUtimoIntento > TiempoEntreIntentos || TiempoDesdeUtimoIntento < 1)
            {
                model.no_intento_acceso = 0;
            }

            if (model.no_intento_acceso < NoIntentos)
            {
                model.no_intento_acceso++;
                model.fe_ultimo_intento_acceso = DateTime.Now;
            }
            intentosRestantes = NoIntentos - model.no_intento_acceso;



            if (Membership.ValidateUser(model.email_principal, pass) && ((model.no_intento_acceso < NoIntentos) || (model.es_super_usuario)))
            {
                model.fe_ultimo_intento_acceso = DateTime.Now;
                model.no_intento_acceso        = 0;

                db.SaveChanges();

                int aux;
                int TiempoSesion = Int32.TryParse(Utilidades.Utilidades.GetSecurityProp("TiempoSesion", "20"), out aux) ? ((aux < 0) ? 30 : aux) : (30);

                //Variable de sesion para realizar 1 vez la validacion de la caducidad de la contraseña
                FormsAuthentication.SetAuthCookie(model.email_principal, false);
                FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, model.email_principal, DateTime.Now, DateTime.Now.AddMinutes(TiempoSesion), false, model.id_usuario.ToString());
                string encTicket = FormsAuthentication.Encrypt(ticket);
                Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket)
                {
                    Expires = ticket.Expiration
                });
                HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
                Response.Redirect(FormsAuthentication.GetRedirectUrl(model.email_principal, false));
                HttpContext.Session["CHECKEDPASS"] = false;
                //Seconds To Change Password
                //Si quedan menos de 3 días para cambiar la contraseña, se mostrara un aviso en la pantalla de inicio
                HttpContext.Session["STCP"] = "253800";
                HttpContext.Session["SCC"]  = "false";

                HttpContext.Session.Timeout = 30;

                var cadena = HttpContext.Session["SCC"].ToString();
                return(null);
            }
            //en caso de que ValidateUser retorne false, verificar si el usuario esta bloqueado

            if (model.id_estatus_usuario == 4)
            {
                ViewBag.Mensaje = "Su usuario se encuentra bloqueado, por favor acuda con el Administrador del sistema";
            }
            else
            {
                ViewBag.Mensaje = "false";
                if (intentosRestantes == 0)
                {
                    if (Utilidades.Utilidades.GetBoolSecurityProp("BSI", "false"))
                    {
                        //Si está activada la opcion BSI el usuario será bloqueado
                        model.id_estatus_usuario = 4;
                        ViewBag.Mensaje          = "Su usuario se encuentra bloqueado, por favor acuda con el Administrador del sistema";
                    }
                }


                if (intentosRestantes != 0)
                {
                    ViewBag.Error = "Nombre de usuario o contraseña incorrectos.\nQuedan " + intentosRestantes + " intentos para iniciar sesión";
                }
                else
                {
                    if (TiempoEntreIntentos != 0)
                    {
                        ViewBag.Error = "Ha superado el numero de intentos máximo. Espere " + (TiempoSiguienteIntento + 1) + " Minutos para volver a intentarlo";
                    }
                    else
                    {
                        ViewBag.Error = "Su usuario supero el número de intentos permitidos y fue bloqueado, por favor acuda con el Administrador del sistema";
                    }
                }
            }
            db.SaveChanges();
            return(View(model));
        }
Exemple #15
0
        public ActionResult DeleteConfirmed(int id)
        {
            c_usuario c_usuario = db.c_usuario.Find(id);

            c_usuario.c_rol.Clear();



            //fijar su estado en 0
            c_usuario.esta_activo        = false;
            c_usuario.id_estatus_usuario = 3;
            try
            {
                db.SaveChanges();
            }
            catch
            {
                return(RedirectToAction("CantErase", "Error", null));
            }

            //En caso de que el registro se haya eliminado correctamente, redireccionar dependiendo desde donde se haya accesado al menú de eliminar
            int ns;

            try
            {
                ns = (int)HttpContext.Session["JumpCounter"];
            }
            catch
            {
                ns = 0;
            }
            //Si ns es 0 redireccionamos al index de este controlador
            if (ns == 0)
            {
                return(RedirectToAction("Index"));
            }//En caso de que ns sea distinto a 0, obtenemos el Array "Directions", agregamos la direccion actual, aumentamos el contador y salvamos ambas variables globales
            else
            {
                List <string> directions = new List <string>();
                try
                {
                    directions = (List <string>)HttpContext.Session["Directions"];
                }
                catch
                {
                    directions = null;
                }

                if (directions == null)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    string             direction = directions.Last();
                    DirectionViewModel dir       = Utilidades.Utilidades.getDirection(direction);
                    //disminuimos ns y eliminamos el ultimo elemento de directions
                    ns--;
                    directions.RemoveAt(ns);

                    //Guardamos ambas variables de sesion para seguir trabajando
                    HttpContext.Session["JumpCounter"] = ns;
                    HttpContext.Session["Directions"]  = directions;

                    return(RedirectToAction(dir.Action, dir.Controller, new { id = dir.Id, redirect = "bfo" }));
                }
            }
        }