Exemplo n.º 1
0
    protected void CheckPermissions(UserGroup ug, RadMenuItemCollection col)
    {
        foreach (RadMenuItem i in col)
        {
            Process pr = (from p in ctx.Processes
                          where p.Code == i.Value
                          select p).FirstOrDefault <Process>();

            if (pr != null)
            {
                Permission per = CntAriCli.GetPermission(ug, pr, ctx);
                if (per != null)
                {
                    if (!per.View)
                    {
                        i.Visible = false;
                    }
                }
                else
                {
                    i.Visible = false;  // If no permission not show
                }
            }
            else
            {
                i.Visible = false;  // If doesn't exits not show
            }
            // recursive call if there are submenus or items in it
            if (i.Items.Count > 0)
            {
                CheckPermissions(ug, i.Items);
            }
        }
    }
Exemplo n.º 2
0
 protected void ChekPermissions(GrupoUsuario gu, RadMenuItemCollection col)
 {
     foreach (RadMenuItem i in col)
     {
         Proceso proceso = CntLainsaSci.GetProceso(i.Value, ctx);
         if (proceso != null)
         {
             Permiso permiso = CntLainsaSci.GetPermiso(gu, proceso, ctx);
             if (permiso != null)
             {
                 if (!permiso.Ver)
                 {
                     i.Visible = false;
                 }
             }
             else
             {
                 i.Visible = false;  // If no permission not show
             }
         }
         else
         {
             i.Visible = false;  // If doesn't exits not show
         }
         // recursive call if there are submenus or items in it
         if (i.Items.Count > 0)
         {
             ChekPermissions(gu, i.Items);
         }
     }
 }
Exemplo n.º 3
0
        private void GetMenuItem(RadMenuItemCollection radMenuItem, string enumMenuName)
        {
            foreach (RadMenuItem menu in radMenuItem)
            {
                if (menu.Text == string.Empty)
                {
                    continue;
                }

                var menuName = menu.Value == string.Empty ? menu.Text.Replace(" ", string.Empty).ToLower() : menu.Value.Replace(" ", string.Empty).ToLower();
                if (enumMenuName == menuName)
                {
                    menu.Enabled = true;

                    // check select
                    if (menu.NavigateUrl.ToLower() == ('~' + HttpContext.Current.Request.Url.AbsolutePath.ToLower()))
                    {
                        //menu.Selected = true;
                        if (menu.Parent.GetType() == typeof(RadMenuItem))
                        {
                            ((RadMenuItem)menu.Parent).Selected = true;
                        }
                    }
                }
                GetMenuItem(menu.Items, enumMenuName);
            }
        }
Exemplo n.º 4
0
    protected void Page_Load(object sender, EventArgs e)
    {
        this.LanguageSelector1.LanguageChanged += new EventHandler(LanguageSelector_LanguageChanged);

        viewingPerson = Person.FromIdentity(Int32.Parse(HttpContext.Current.User.Identity.Name));
        Authority authority = viewingPerson.GetAuthority();

        RadMenu MainMenu = FindControl("MainMenu") as RadMenu;

        Dictionary <string, bool> enableCache = new Dictionary <string, bool>();

        if (Session["MainMenu-v4_Enabling"] != null &&
            PermissionCacheTimestamp.AddSeconds(10) > DateTime.Now &&
            Authorization.lastReload < PermissionCacheTimestamp)
        {
            enableCache = Session["MainMenu-v4_Enabling"] as Dictionary <string, bool>;
        }
        else
        {
            PermissionCacheTimestamp = DateTime.Now;
        }


        Authorization.flagReload = false;
        RadMenuItemCollection menuItems = MainMenu.Items;

        SetupMenuItemsEnabling(authority, enableCache, menuItems);
        Session["MainMenu-v4_Enabling"] = enableCache;

        if (this.Page is PageV4Base)
        {
            bool CurrentPageAccess = false;
            if (((PageV4Base)this.Page).pagePermissionDefault != null)
            {
                CurrentPageAccess = Authorization.CheckAuthorization(((PageV4Base)this.Page).pagePermissionDefault, -1, -1, authority, Authorization.Flag.AnyGeographyAnyOrganization);
            }

            if ((CurrentPageAccess == false && CurrentPageAllowed == false) || CurrentPageProhibited)
            {
                this.AccessDeniedPanel.Visible = true;
                if (CurrentPageAccess == false)
                {
                    this.LabelFailedPermission.Text = (((PageV4Base)this.Page).pagePermissionDefault).ToString();
                }
                else if (CurrentPageProhibited)
                {
                    this.LabelFailedPermission.Text = "CurrentPageProhibited";
                }

                this.BodyContent.Visible = false;
            }
            else
            {
                this.AccessDeniedPanel.Visible = false;
                this.BodyContent.Visible       = true;
            }
        }
    }
Exemplo n.º 5
0
    protected void CheckPermissions(UserGroup ug, RadMenuItemCollection col)
    {
        foreach (RadMenuItem i in col)
        {
            Process pr = (from p in ctx.Processes
                          where p.Code == i.Value
                          select p).FirstOrDefault<Process>();

            if (pr != null)
            {
                Permission per = CntAriCli.GetPermission(ug, pr, ctx);
                if (per != null)
                {
                    if (!per.View) i.Visible = false;
                }
                else i.Visible = false; // If no permission not show
            }
            else i.Visible = false; // If doesn't exits not show

            // recursive call if there are submenus or items in it
            if (i.Items.Count > 0)
                CheckPermissions(ug, i.Items);
        }
    }
Exemplo n.º 6
0
    private bool SetupMenuItemsEnabling (Authority authority, Dictionary<string, bool> enableCache, RadMenuItemCollection menuItems)
    {
        //TODO: Need to handle setup when user is not swedish, current handling supposes that top org is Organization.PPSEid
        string thisPageUrl = Request.Url.Segments[Request.Url.Segments.Length - 1].ToLower();
        bool anyItem = false;
        foreach (RadMenuItem item in menuItems)
        {
            string itemID = CollectItemID(item);
            if (enableCache.ContainsKey(itemID))
            {
                item.Enabled = enableCache[itemID];
            }
            else
            {
                item.Enabled = true;
                if (string.IsNullOrEmpty(item.Attributes["Permission"]) == false)
                {
                    string permString = item.Attributes["Permission"].ToString();
                    PermissionSet allowedFor = new PermissionSet(permString);
                    item.Enabled = Authorization.CheckAuthorization(allowedFor, -1, -1, authority, Authorization.Flag.AnyGeographyAnyOrganization);
                }
                else
                {
                    RadMenuItem permissionParent = item;
                    while (permissionParent.Parent is RadMenuItem)
                    {
                        if (string.IsNullOrEmpty(permissionParent.Attributes["Permission"]) == false)
                        {
                            item.Enabled = permissionParent.Enabled;
                            item.Attributes["Permission"] = permissionParent.Attributes["Permission"].ToString();
                            break;
                        }
                        permissionParent = permissionParent.Parent as RadMenuItem;
                    }
                }
                if (string.IsNullOrEmpty(item.NavigateUrl) && item.Items.Count == 0)
                    item.Enabled = false;
                enableCache[itemID] = item.Enabled;
            }
            string[] currentItemUrlSplit = item.NavigateUrl.ToLower().Split(new char[] { '/', '?' }, StringSplitOptions.RemoveEmptyEntries);
            if (Array.Exists<string>(currentItemUrlSplit,
                            delegate(String s) { if (s == thisPageUrl) return true; else return false; })
                )
            {
                if (string.IsNullOrEmpty(item.Attributes["Permission"]) == false)
                {
                    string permString = item.Attributes["Permission"].ToString();
                    ((PageV4Base)(this.Page)).pagePermissionDefault = new PermissionSet(permString);
                }
            }
            if (item.Items.Count > 0)
            {
                bool enabledSubItems = SetupMenuItemsEnabling(authority, enableCache, item.Items);
                if (enabledSubItems)
                    item.Enabled = true;
                else
                    item.Enabled = false;
            }
            else if (string.IsNullOrEmpty(item.NavigateUrl))
            {
                item.Enabled = false;
            }

            anyItem |= item.Enabled;
        }
        return anyItem;
    }
Exemplo n.º 7
0
    private bool SetupMenuItemsEnabling(Authority authority, Dictionary <string, bool> enableCache, RadMenuItemCollection menuItems)
    {
        //TODO: Need to handle setup when user is not swedish, current handling supposes that top org is Organization.PPSEid
        string thisPageUrl = Request.Url.Segments[Request.Url.Segments.Length - 1].ToLower();
        bool   anyItem     = false;

        foreach (RadMenuItem item in menuItems)
        {
            string itemID = CollectItemID(item);
            if (enableCache.ContainsKey(itemID))
            {
                item.Enabled = enableCache[itemID];
            }
            else
            {
                item.Enabled = true;
                if (string.IsNullOrEmpty(item.Attributes["Permission"]) == false)
                {
                    string        permString = item.Attributes["Permission"].ToString();
                    PermissionSet allowedFor = new PermissionSet(permString);
                    item.Enabled = Authorization.CheckAuthorization(allowedFor, -1, -1, authority, Authorization.Flag.AnyGeographyAnyOrganization);
                }
                else
                {
                    RadMenuItem permissionParent = item;
                    while (permissionParent.Parent is RadMenuItem)
                    {
                        if (string.IsNullOrEmpty(permissionParent.Attributes["Permission"]) == false)
                        {
                            item.Enabled = permissionParent.Enabled;
                            item.Attributes["Permission"] = permissionParent.Attributes["Permission"].ToString();
                            break;
                        }
                        permissionParent = permissionParent.Parent as RadMenuItem;
                    }
                }
                if (string.IsNullOrEmpty(item.NavigateUrl) && item.Items.Count == 0)
                {
                    item.Enabled = false;
                }
                enableCache[itemID] = item.Enabled;
            }
            string[] currentItemUrlSplit = item.NavigateUrl.ToLower().Split(new char[] { '/', '?' }, StringSplitOptions.RemoveEmptyEntries);
            if (Array.Exists <string>(currentItemUrlSplit,
                                      delegate(String s) { if (s == thisPageUrl)
                                                           {
                                                               return(true);
                                                           }
                                                           else
                                                           {
                                                               return(false);
                                                           } })
                )
            {
                if (string.IsNullOrEmpty(item.Attributes["Permission"]) == false)
                {
                    string permString = item.Attributes["Permission"].ToString();
                    ((PageV4Base)(this.Page)).pagePermissionDefault = new PermissionSet(permString);
                }
            }
            if (item.Items.Count > 0)
            {
                bool enabledSubItems = SetupMenuItemsEnabling(authority, enableCache, item.Items);
                if (enabledSubItems)
                {
                    item.Enabled = true;
                }
                else
                {
                    item.Enabled = false;
                }
            }
            else if (string.IsNullOrEmpty(item.NavigateUrl))
            {
                item.Enabled = false;
            }

            anyItem |= item.Enabled;
        }
        return(anyItem);
    }