private bool UpdateRole() { try { if (!currentUserCanModifySettings) throw new Exception(GetMessageRaw("Message.InsufficientRightsToEditRole")); if (String.IsNullOrEmpty(tbRoleName.Text)) throw new Exception(GetMessageRaw("Message.RoleNameRequired")); BXSecurityPolicy policy = new BXSecurityPolicy(); if (!cbCheckwordTimeoutParent.Checked) { int checkwordTimeout; if (Int32.TryParse(tbCheckwordTimeout.Text, out checkwordTimeout)) policy.CheckwordTimeoutDraft = checkwordTimeout; } if (!cbMaxStoreNumParent.Checked) { int maxStoreNumParent; if (Int32.TryParse(tbMaxStoreNum.Text, out maxStoreNumParent)) policy.MaxStoreNumDraft = maxStoreNumParent; } if (!cbSessionIPMaskParent.Checked) { policy.SessionIPMaskDraft = tbSessionIPMask.Text; } if (!cbStoreIPMaskParent.Checked) { policy.StoreIPMaskDraft = tbStoreIPMask.Text; } if (!cbSessionTimeoutParent.Checked) { int sessionTimeoutParent; if (Int32.TryParse(tbSessionTimeout.Text, out sessionTimeoutParent)) policy.SessionTimeoutDraft = sessionTimeoutParent; } if (!cbStoreTimeoutParent.Checked) { int storeTimeoutParent; if (Int32.TryParse(tbStoreTimeout.Text, out storeTimeoutParent)) policy.StoreTimeoutDraft = storeTimeoutParent; } role.Active = cbActive.Checked; role.RoleTitle = tbRoleTitle.Text; role.Comment = tbComment.Text; role.Policy = policy.Policy; string roleName = tbRoleName.Text; if (!String.IsNullOrEmpty(role.ProviderName)) { if (roleName.StartsWith(role.ProviderName + @"\", StringComparison.InvariantCultureIgnoreCase)) roleName = roleName.Substring(role.ProviderName.Length + 1); roleName = role.ProviderName + @"\" + roleName; } role.RoleName = roleName; role.Update(); List<string> subRolesTmp1 = new List<string>(); foreach (ListItem item in lbSubRoles.Items) if (item.Selected) subRolesTmp1.Add(item.Value); role.RemoveFromSubRoles(); if (subRolesTmp1.Count > 0) { string[] subRolesTmp = subRolesTmp1.ToArray(); role.AddToSubRoles(subRolesTmp); } List<string> taskNamesTmp1 = new List<string>(); foreach (ListItem item in lbTasks.Items) if (item.Selected) taskNamesTmp1.Add(item.Value); role.RemoveFromTasks(); if (taskNamesTmp1.Count > 0) { string[] taskNamesTmp = taskNamesTmp1.ToArray(); role.AddToTasks(taskNamesTmp); } List<string> operationNamesTmp1 = new List<string>(); foreach (Control cntrl in Form.Controls) WalkThrowControlsGet(cntrl, ref operationNamesTmp1); role.RemoveFromOperations(); if (operationNamesTmp1.Count > 0) { string[] operationNamesTmp = operationNamesTmp1.ToArray(); role.AddToOperations(operationNamesTmp); } foreach (var r in ActiveRoles) foreach (var op in userOperations) { try { BXRoleManager.RemoveRoleFromOperations(role.RoleName, op, "main", "r" + r.RoleId.ToString()); } catch { } } var separate = UserOperationsSeparate.Checked; var userOps = from RepeaterItem i in UserOperationsContainer.Items where ((CheckBox)i.FindControl("Operation")).Checked select new { Name = userOperationNames[i], Limited = separate ? ((CheckBox)i.FindControl("Limit")).Checked : UserOperationsLimit.Checked, Roles = separate ? (ListControl)i.FindControl("Roles") : UserOperationsRoles }; string[] roleNameArray = new[] { role.RoleName }; foreach (var op in userOps) { if (!op.Limited) role.AddToOperations(new [] { op.Name }); else { var opNameArray = new [] { op.Name }; BXRoleManager.AddRolesToOperations(roleNameArray, opNameArray, "main", "r2"); BXRoleManager.AddRolesToOperations(roleNameArray, opNameArray, "main", "r3"); foreach (var opRole in (from ListItem i in op.Roles.Items where i.Selected select i.Value)) BXRoleManager.AddRolesToOperations(roleNameArray, opNameArray, "main", "r" + opRole); } } return true; } catch (Exception e) { errorMessage.AddErrorMessage(e.Message); } return false; }
private void LoadData() { lbSubRoles.Items.Clear(); foreach (BXRole roleTmp in ActiveRoles) { if (role == null || !String.Equals(role.RoleName, roleTmp.RoleName, StringComparison.InvariantCultureIgnoreCase)) lbSubRoles.Items.Add(new ListItem(roleTmp.Title, roleTmp.RoleName)); } lbTasks.Items.Clear(); BXRoleTaskCollection tasksTmp = BXRoleTaskManager.GetList(null, new BXOrderBy_old("TaskName", "Asc")); foreach (BXRoleTask taskTmp in tasksTmp) lbTasks.Items.Add(new ListItem(taskTmp.Title, taskTmp.TaskName)); string moduleIdTmp = null; CheckBoxList lbOperationsTmp = new CheckBoxList(); BXRoleOperationCollection operationsTmp = BXRoleOperationManager.GetList(null, new BXOrderBy_old("ModuleId", "Asc", "OperationName", "Asc")); foreach (BXRoleOperation operationTmp in operationsTmp) { if (String.IsNullOrEmpty(moduleIdTmp) || !moduleIdTmp.Equals(operationTmp.ModuleId, StringComparison.InvariantCultureIgnoreCase)) { moduleIdTmp = operationTmp.ModuleId; Control cntrl = WalkThrowControlsSearch(Form, String.Format("lbOperations_{0}", moduleIdTmp)); lbOperationsTmp = (CheckBoxList)cntrl; lbOperationsTmp.Items.Clear(); } //remove special user operations from the common list if (!Array.Exists(userOperations, x => string.Equals(x, operationTmp.OperationName, StringComparison.OrdinalIgnoreCase))) lbOperationsTmp.Items.Add(new ListItem(Encode(operationTmp.OperationFriendlyName), operationTmp.OperationName)); } if (role == null) { roleId = -1; hfRoleId.Value = roleId.ToString(); ddProviderName.Visible = true; lbProviderName.Visible = false; trUsersCount.Visible = false; trRolesCount.Visible = false; cbCheckwordTimeoutParent.Checked = true; cbMaxStoreNumParent.Checked = true; cbSessionIPMaskParent.Checked = true; cbSessionTimeoutParent.Checked = true; cbStoreIPMaskParent.Checked = true; cbStoreTimeoutParent.Checked = true; tbCheckwordTimeout.Enabled = false; tbMaxStoreNum.Enabled = false; tbSessionIPMask.Enabled = false; tbSessionTimeout.Enabled = false; tbStoreIPMask.Enabled = false; tbStoreTimeout.Enabled = false; cbActive.Checked = true; ddProviderName.Items.Add(new ListItem(GetMessageRaw("BuiltIn"), "")); foreach (RoleProvider pr in Roles.Providers) ddProviderName.Items.Add(pr.Name); ddProviderName.SelectedIndex = 0; } else { ddProviderName.Visible = false; lbProviderName.Visible = true; trUsersCount.Visible = true; trRolesCount.Visible = true; lbProviderName.Text = HttpUtility.HtmlEncode((!String.IsNullOrEmpty(role.ProviderName) ? role.ProviderName : GetMessageRaw("BuiltIn"))); tbRoleName.Text = role.ProviderRoleName; tbRoleTitle.Text = role.RoleTitle; tbComment.Text = role.Comment; lbUsersCount.Text = role.UsersCount.ToString(); lbRolesCount.Text = role.RolesCount.ToString(); cbActive.Checked = role.Active; string[] subRolesTmp = BXRoleManager.GetList(new BXFormFilter(new BXFormFilterItem("Parent.RoleName", role.RoleName, BXSqlFilterOperators.Equal)), new BXOrderBy_old("RoleName", "Asc")).ToStringArray(); List<string> subRolesTmp1 = new List<string>(subRolesTmp); foreach (ListItem item in lbSubRoles.Items) if (subRolesTmp1.Contains(item.Value)) item.Selected = true; string[] subTasksTmp = BXRoleTaskManager.GetList( new BXFormFilter( new BXFormFilterItem("Role.RoleName", role.RoleName, BXSqlFilterOperators.Equal), new BXFormFilterItem("Role.ModuleId", "", BXSqlFilterOperators.Equal) ), new BXOrderBy_old("TaskName", "Asc") ).ToStringArray(); List<string> subTasksTmp1 = new List<string>(subTasksTmp); foreach (ListItem item in lbTasks.Items) if (subTasksTmp1.Contains(item.Value)) item.Selected = true; string[] subOperationsTmp = BXRoleOperationManager.GetList( new BXFormFilter( new BXFormFilterItem("Role.RoleName", role.RoleName, BXSqlFilterOperators.Equal), new BXFormFilterItem("Role.ModuleId", "", BXSqlFilterOperators.Equal) ), new BXOrderBy_old("OperationName", "Asc") ) .ToStringArray(); List<string> subOperationsTmp1 = new List<string>(subOperationsTmp); foreach (Control cntrl in Form.Controls) WalkThrowControlsSelect(cntrl, ref subOperationsTmp1); BXSecurityPolicy policy = new BXSecurityPolicy(role.Policy); FillPolicyFieldsInt(policy.CheckwordTimeoutDraft, tbCheckwordTimeout, cbCheckwordTimeoutParent); FillPolicyFieldsInt(policy.MaxStoreNumDraft, tbMaxStoreNum, cbMaxStoreNumParent); FillPolicyFieldsString(policy.SessionIPMaskDraft, tbSessionIPMask, cbSessionIPMaskParent); FillPolicyFieldsInt(policy.SessionTimeoutDraft, tbSessionTimeout, cbSessionTimeoutParent); FillPolicyFieldsString(policy.StoreIPMaskDraft, tbStoreIPMask, cbStoreIPMaskParent); FillPolicyFieldsInt(policy.StoreTimeoutDraft, tbStoreTimeout, cbStoreTimeoutParent); LoadUserOperations(subOperationsTmp); } }