public IEnumerable <SecurityWrapper> SetAccessToWebItems(WebItemSecurityModel model) { SecurityContext.DemandPermissions(Tenant, SecutiryConstants.EditPortalSettings); var itemList = new ItemDictionary <string, bool>(); foreach (var item in model.Items) { if (!itemList.ContainsKey(item.Key)) { itemList.Add(item.Key, item.Value); } } var defaultPageSettings = StudioDefaultPageSettings.Load(); foreach (var item in itemList) { Guid[] subjects = null; var productId = new Guid(item.Key); if (item.Value) { if (WebItemManager.Instance[productId] is IProduct webItem) { var productInfo = WebItemSecurity.GetSecurityInfo(Tenant.TenantId, item.Key); var selectedGroups = productInfo.Groups.Select(group => group.ID).ToList(); var selectedUsers = productInfo.Users.Select(user => user.ID).ToList(); selectedUsers.AddRange(selectedGroups); if (selectedUsers.Count > 0) { subjects = selectedUsers.ToArray(); } } } else if (productId == defaultPageSettings.DefaultProductID) { (defaultPageSettings.GetDefault() as StudioDefaultPageSettings).Save(); } WebItemSecurity.SetSecurity(item.Key, item.Value, subjects); } MessageService.Send(MessageAction.ProductsListUpdated); return(GetWebItemSecurityInfo(itemList.Keys.ToList())); }
public IEnumerable <SecurityWrapper> SetWebItemSecurity(WebItemSecurityModel model) { SecurityContext.DemandPermissions(Tenant, SecutiryConstants.EditPortalSettings); WebItemSecurity.SetSecurity(model.Id, model.Enabled, model.Subjects?.ToArray()); var securityInfo = GetWebItemSecurityInfo(new List <string> { model.Id }); if (model.Subjects == null) { return(securityInfo); } var productName = GetProductName(new Guid(model.Id)); if (!model.Subjects.Any()) { MessageService.Send(MessageAction.ProductAccessOpened, productName); } else { foreach (var info in securityInfo) { if (info.Groups.Any()) { MessageService.Send(MessageAction.GroupsOpenedProductAccess, productName, info.Groups.Select(x => x.Name)); } if (info.Users.Any()) { MessageService.Send(MessageAction.UsersOpenedProductAccess, productName, info.Users.Select(x => HttpUtility.HtmlDecode(x.DisplayName))); } } } return(securityInfo); }