/// <summary> /// Permite consultar los Permisos de una Opción especifica de una Aplicación, /// devuelve un valor Booleano (True si tiene acceso y False si no lo tiene) /// </summary> /// <param name="tipo">Tipo de Permiso (si se escoge Otro se usará el parametro OtroPermiso)</param> /// <param name="NombreModulo">Literal. Opción del Sistema</param> /// <param name="OtroPermiso">Literal. Opcion utilizada cuando en Tipo se establece Otro</param> /// <remarks>Erick Orlando © 2008</remarks> public static bool ConsultarPermisos(TipoAccion tipo, string NombreModulo, string OtroPermiso = "") { //Recuperamos el Usuario Autenticado if (ApplicationContext.LocalContext["Principal"] != null) { ApplicationContext.User = ApplicationContext.LocalContext["Principal"] as IPrincipal; } //Consultamos los Permisos Efectivos var coleccion = PermisosEfectivosInfoList.GetPermisosEfectivosInfoList(); var opcion = OtroPermiso; switch (tipo) { case TipoAccion.PuedeAgregar: opcion = "Nuevo"; break; case TipoAccion.PuedeActualizar: opcion = "Editar"; break; case TipoAccion.PuedeEliminar: opcion = "Eliminar"; break; case TipoAccion.PuedeLeer: opcion = "Buscar"; break; default: if (String.IsNullOrEmpty(OtroPermiso)) { throw new ArgumentNullException("No se ha especificado un valor para el parámetro OtroPermiso"); } break; } var permisos = coleccion.Where(p => p.Opcion.Equals(NombreModulo) && p.Conceder.Equals(true) && p.Opcion.Equals(opcion)); foreach (var item in permisos) { if (ApplicationContext.User.IsInRole(item.Rol)) { return(true); } } //Si termina el recorrido de todos los Roles y ninguno tiene permisos return(false); //Devolvermos Falso. }
/// <summary> /// Limpia por Completo la caché de Permisos /// NOTA: No es igual que cerrar sesión /// </summary> /// <remarks>Erick Orlando © 2010</remarks> public static void LimpiarCache() { PermisosEfectivosInfoList.InvalidateCache(); }