Пример #1
0
        private void SaveEditPermission(int portalId, MenuItem menuItem)
        {
            var viewPermission = MenuPermissionController.GetPermissions(menuItem.MenuId).FirstOrDefault(p => p.PermissionKey == "VIEW");
            var editPermission = MenuPermissionController.GetPermissions(menuItem.MenuId).FirstOrDefault(p => p.PermissionKey == "EDIT");

            if (viewPermission == null || editPermission == null)
            {
                return;
            }

            var permissions = MenuPermissionController.GetMenuPermissions(portalId, menuItem.Identifier).ToList();

            permissions.ForEach(p =>
            {
                if (p.PermissionID == viewPermission.PermissionId)
                {
                    if (!permissions.Any(c => c.PermissionID == editPermission.PermissionId && c.RoleID == p.RoleID && c.UserID == p.UserID))
                    {
                        var menuPermissionInfo = new MenuPermissionInfo
                        {
                            MenuPermissionId = Null.NullInteger,
                            MenuId           = menuItem.MenuId,
                            PermissionID     = editPermission.PermissionId,
                            RoleID           = p.RoleID,
                            UserID           = p.UserID,
                            AllowAccess      = p.AllowAccess,
                        };

                        MenuPermissionController.SaveMenuPermissions(portalId, menuItem, menuPermissionInfo);
                    }
                }
            });
        }
Пример #2
0
        public int Add(MenuPermissionInfo value, bool checkForDuplicates)
        {
            int id = Null.NullInteger;

            if (!checkForDuplicates)
            {
                id = this.Add(value);
            }
            else
            {
                bool isMatch = false;
                foreach (MenuPermissionInfo permission in this.List)
                {
                    if (permission.PortalId == value.PortalId &&
                        permission.MenuId == value.MenuId &&
                        permission.PermissionID == value.PermissionID &&
                        permission.UserID == value.UserID &&
                        permission.RoleID == value.RoleID)
                    {
                        isMatch = true;
                        break;
                    }
                }

                if (!isMatch)
                {
                    id = this.Add(value);
                }
            }

            return(id);
        }
        public static void SaveMenuPermissions(int portalId, MenuItem menu, MenuPermissionInfo permissionInfo)
        {
            var user = UserController.Instance.GetCurrentUserInfo();

            permissionInfo.MenuPermissionId = DataService.SavePersonaBarMenuPermission(
                portalId,
                menu.MenuId,
                permissionInfo.PermissionID,
                permissionInfo.RoleID,
                permissionInfo.UserID,
                permissionInfo.AllowAccess,
                user.UserID);

            ClearCache(portalId);
        }
Пример #4
0
 public int Add(MenuPermissionInfo value)
 {
     return(this.List.Add(value));
 }
Пример #5
0
 public void Remove(MenuPermissionInfo value)
 {
     this.List.Remove(value);
 }
Пример #6
0
 public void Insert(int index, MenuPermissionInfo value)
 {
     this.List.Insert(index, value);
 }
Пример #7
0
 public int IndexOf(MenuPermissionInfo value)
 {
     return(this.List.IndexOf(value));
 }
Пример #8
0
 public bool Contains(MenuPermissionInfo value)
 {
     return(this.List.Contains(value));
 }
        private static void SaveMenuDefaultPermissions(int portalId, MenuItem menuItem, string roleName, bool ignoreExists)
        {
            try
            {
                var defaultPermissions = roleName.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries).ToList();
                if (defaultPermissions.Count > 1)
                {
                    roleName = defaultPermissions[0];
                }

                defaultPermissions.RemoveAt(0);
                var administratorRole = PortalController.Instance.GetPortal(portalId).AdministratorRoleName;

                var nullRoleId  = Convert.ToInt32(Globals.glbRoleNothing);
                var permissions = GetPermissions(menuItem.MenuId)
                                  .Where(p => p.MenuId == Null.NullInteger ||
                                         (roleName == administratorRole && defaultPermissions.Count == 0) || // Administrator gets all granular permissions only if no permission specified explicity.
                                         defaultPermissions.Contains(p.PermissionKey));

                var roleId = nullRoleId;
                switch (roleName)
                {
                case Globals.glbRoleUnauthUserName:
                    roleId = Convert.ToInt32(Globals.glbRoleUnauthUser);
                    break;

                case Globals.glbRoleAllUsersName:
                    roleId = Convert.ToInt32(Globals.glbRoleAllUsers);
                    break;

                default:
                    var role = RoleController.Instance.GetRoleByName(portalId, roleName);
                    if (role != null && role.IsSystemRole)
                    {
                        roleId = role.RoleID;
                    }
                    else if (role != null)
                    {
                        Logger.Error($"Role \"{roleName}\" in portal \"{portalId}\" doesn't marked as system role, will ignore add this default permission to {menuItem.Identifier}.");
                    }

                    break;
                }

                if (roleId > nullRoleId)
                {
                    if (!ignoreExists)
                    {
                        var menuPermissions = GetMenuPermissions(portalId, menuItem.MenuId);
                        permissions =
                            permissions.Where(
                                x =>
                                !menuPermissions.ToList()
                                .Exists(y => y.PermissionID == x.PermissionId && y.RoleID == roleId));
                    }

                    foreach (var permission in permissions)
                    {
                        var menuPermissionInfo = new MenuPermissionInfo
                        {
                            MenuPermissionId = Null.NullInteger,
                            MenuId           = menuItem.MenuId,
                            PermissionID     = permission.PermissionId,
                            RoleID           = roleId,
                            UserID           = Null.NullInteger,
                            AllowAccess      = true,
                        };

                        SaveMenuPermissions(portalId, menuItem, menuPermissionInfo);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
        }