示例#1
0
        public ActionResult Index()
        {
            /*Solo se puede acceder a este método si el usuario tiene un perfil con los permisos apropiados.*/
            if (!permissionManager.IsAuthorized(Permission.VER_PERMISOS_Y_PERFILES))
            {
                TempData["alertmessage"] = "No tiene permisos para acceder a esta página.";
                return(RedirectToAction("Index", "Home"));
            }
            PermissionsViewHolder model = new PermissionsViewHolder();

            return(View(model));
        }
        public ActionResult Index(PermissionsViewHolder model)
        {
            if (!permissionManager.IsAuthorized(Permission.EDITAR_PERMISOS_Y_PERFILES))
            {
                TempData["alertmessage"] = "No tiene permisos para acceder a esta página.";
                return(RedirectToAction("../Home/Index"));
            }

            int            codPerfil  = model.PerfilesSeleccionados;
            string         perfil     = model.Perfiles[codPerfil].NombrePerfil;
            string         codCarrera = model.CarrerasSeleccionadas;
            string         codEnfasis = model.EnfasisSeleccionados;
            List <Persona> Personas   = model.Personas;
            List <Permiso> Permisos   = model.Permisos;

            if ((perfil == null) || (codCarrera == null) || (codEnfasis == null))
            {
                TempData["alertmessage"] = "Algo salió mal. Intente de nuevo.";
                return(RedirectToAction("Index", "Home"));
            }

            if (permissionManager.IsAuthorized(Permission.ASIGNAR_PERFILES_USUARIOS))
            {
                //Guarda las asignaciones de un perfil en una carrera y un enfasis a los usuarios
                for (int i = 0; i < Personas.Count; ++i)
                {
                    db.AgregarUsuarioPerfil(Personas[i].Correo, perfil, codCarrera, codEnfasis, Personas[i].HasProfileInEmph);
                }
            }

            if (permissionManager.IsAuthorized(Permission.ASIGNAR_PERMISOS_PERFILES))
            {
                //Guarda las asignaciones de permisos a un perfil en una carrera y un enfasis
                for (int i = 0; i < Permisos.Count; ++i)
                {
                    db.AgregarPerfilPermiso(perfil, Permisos[i].Id, codCarrera, codEnfasis, Permisos[i].ActiveInProfileEmph);
                }
            }
            ViewBag.resultmessage = "Los cambios han sido guardados";
            return(View(model));
        }
示例#3
0
        public void TestGuardarPermisosSinPermiso()
        {
            Init("*****@*****.**");
            CurrentUser.setCurrentUser("*****@*****.**", "Estudiante", "0000000001", "0000000001");
            var httpContext = new HttpContext(
                new HttpRequest("", "http://localhost:44334/Home/Login", ""),
                new HttpResponse(new StringWriter())
                );
            var tempData = new TempDataDictionary();
            PermissionsController controller = new PermissionsController()
            {
                TempData = tempData
            };
            PermissionsViewHolder model  = new PermissionsViewHolder();
            RedirectToRouteResult result = controller.GuardarPermisos(model, false) as RedirectToRouteResult;

            System.Web.Routing.RouteValueDictionary dictionary = new System.Web.Routing.RouteValueDictionary();
            dictionary.Add("action", "../Home/Index");
            RedirectToRouteResult expected = new RedirectToRouteResult(dictionary);

            Assert.AreEqual(controller.TempData["alertmessage"], "No tiene permisos para acceder a esta página.");
            Assert.AreEqual(result.RouteValues["action"], expected.RouteValues["action"]);
        }
示例#4
0
        public JsonResult CargarCheckboxes(string profileCode, string profileName, string majorCode, string emphCode)
        {
            if ((profileCode == null) || (profileName == null) || (majorCode == null) || (emphCode == null))
            {
                TempData["alertmessage"] = "Algo salió mal. Intente de nuevo.";
                return(Json(new { persons = "", permissions = "" }));
            }
            PermissionsViewHolder model = new PermissionsViewHolder();
            // Obtener nombre de Perfil y Énfasis

            // Actualizar los checkboxes con la selección de énfasis.

            ObjectParameter tienePerfil = new ObjectParameter("tienePerfil", typeof(bool));
            ObjectParameter tieneActivo = new ObjectParameter("tieneActivo", typeof(bool));
            // Para revisar si el usuario tiene todos esos perfiles
            int total;
            int correct;

            // Revisa los checks de las personas
            foreach (Persona persona in model.Personas)
            {
                total   = 0;
                correct = 0;

                ++total;
                // Se asume una sola carrera y un solo énfasis
                db.TienePerfilEnElEnfasis(persona.Correo, profileName, majorCode, emphCode, tienePerfil);

                if ((bool)tienePerfil.Value)
                {
                    // Si tiene el perfil asignado, aumente contador
                    ++correct;
                }

                // Tiene al menos un perfil
                if (correct > 0)
                {
                    // Tiene todos los perfiles
                    if (total == correct)
                    {
                        persona.HasProfileInEmph = true;
                    }
                }
            }

            // Revisa los checks de los permisos
            foreach (Permiso permiso in model.Permisos)
            {
                total   = 0;
                correct = 0;

                ++total;
                // Se asume una sola carrera y un solo énfasis
                db.TienePermisoActivoEnEnfasis(permiso.Id, profileName, majorCode, emphCode, tieneActivo);

                if ((bool)tieneActivo.Value)
                {
                    // Si está activado en el perfil, aumente contador
                    ++correct;
                }


                // Activo en al menos un perfil
                if (correct > 0)
                {
                    // Activo en todos los perfiles
                    if (total == correct)
                    {
                        permiso.ActiveInProfileEmph = true;
                    }
                }
            }
            return(Json(new { persons = PermissionManagerViewBuilder.ListPersonProfiles(model.Personas), permissions = PermissionManagerViewBuilder.ListProfilePermissions(model.Permisos) }));
        }