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)); }
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"]); }
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) })); }