Пример #1
0
        private FrameworkMenu GetMenu2(List <FrameworkModule> allModules, string controllerName, List <FrameworkRole> allowedRoles, List <FrameworkUserBase> allowedUsers, int displayOrder)
        {
            var             acts = allModules.Where(x => x.FullName == $"WalkingTec.Mvvm.Admin.Api,{controllerName}" && x.IsApi == true).SelectMany(x => x.Actions).ToList();
            var             rest = acts.Where(x => x.IgnorePrivillege == false).ToList();
            FrameworkAction act  = null;

            if (acts.Count > 0)
            {
                act = acts[0];
            }
            FrameworkMenu menu = GetMenuFromAction(act, true, allowedRoles, allowedUsers, displayOrder);

            if (menu != null)
            {
                menu.Url        = "/" + acts[0].Module.ClassName.ToLower();
                menu.ModuleName = menu.ModuleName;
                menu.PageName   = menu.ModuleName;
                menu.ActionName = "MainPage";
                menu.ClassName  = acts[0].Module.FullName;
                menu.MethodName = null;
                for (int i = 0; i < rest.Count; i++)
                {
                    if (rest[i] != null)
                    {
                        menu.Children.Add(GetMenuFromAction(rest[i], false, allowedRoles, allowedUsers, (i + 1)));
                    }
                }
            }
            return(menu);
        }
Пример #2
0
        private FrameworkMenu GetMenuFromAction(FrameworkAction act, bool isMainLink, List <FrameworkRole> allowedRoles, List <FrameworkUserBase> allowedUsers, int displayOrder = 1)
        {
            if (act == null)
            {
                return(null);
            }
            FrameworkMenu menu = new FrameworkMenu
            {
                ActionId     = act.ID,
                ModuleId     = act.ModuleId,
                Url          = "/" + act.Module.ClassName + "/" + act.MethodName,
                Privileges   = new List <FunctionPrivilege>(),
                ShowOnMenu   = isMainLink,
                FolderOnly   = false,
                Children     = new List <FrameworkMenu>(),
                IsInherit    = true,
                IsPublic     = false,
                IsInside     = true,
                DisplayOrder = displayOrder,
                CreateTime   = DateTime.Now
            };

            if (act.Module.Area != null)
            {
                menu.Url = "/" + act.Module.Area.Prefix + menu.Url;
            }
            if (isMainLink)
            {
                menu.PageName   = act.Module.ModuleName;
                menu.ModuleName = act.Module.ModuleName;
                menu.ActionName = act.ActionName;
            }
            else
            {
                menu.PageName   = act.ActionName;
                menu.ModuleName = act.Module.ModuleName;
                menu.ActionName = act.ActionName;
            }
            if (allowedRoles != null)
            {
                foreach (var role in allowedRoles)
                {
                    menu.Privileges.Add(new FunctionPrivilege {
                        RoleId = role.ID, Allowed = true
                    });
                }
            }
            if (allowedUsers != null)
            {
                foreach (var user in allowedUsers)
                {
                    menu.Privileges.Add(new FunctionPrivilege {
                        UserId = user.ID, Allowed = true
                    });
                }
            }
            return(menu);
        }