private bool CreateRole() { try { if (!currentUserCanModifySettings) throw new Exception(GetMessageRaw("Message.InsufficientRightsToAddRole")); 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; } string roleName = tbRoleName.Text; if (!String.IsNullOrEmpty(ddProviderName.SelectedValue)) { if (roleName.StartsWith(ddProviderName.SelectedValue + @"\", StringComparison.InvariantCultureIgnoreCase)) roleName = roleName.Substring(ddProviderName.SelectedValue.Length + 1); roleName = ddProviderName.SelectedValue + @"\" + roleName; } role = BXRoleManager.Create(roleName, tbRoleTitle.Text, cbActive.Checked, tbComment.Text, policy.Policy); if (role == null) throw new Exception(GetMessageRaw("Message.UnableToCreateRole")); roleId = role.RoleId; hfRoleId.Value = roleId.ToString(); List<string> subRolesTmp1 = new List<string>(); foreach (ListItem item in lbSubRoles.Items) if (item.Selected) subRolesTmp1.Add(item.Value); 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); 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); if (operationNamesTmp1.Count > 0) { string[] operationNamesTmp = operationNamesTmp1.ToArray(); role.AddToOperations(operationNamesTmp); } 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 (BXEventException e) { foreach (string s in e.Messages) errorMessage.AddErrorMessage(s); } catch (Exception e) { errorMessage.AddErrorMessage(e.Message); } return false; }
protected void Page_Init(object sender, EventArgs e) { roleId = base.GetRequestInt("id"); hfRoleId.Value = Request.Form[hfRoleId.UniqueID]; if (roleId > 0) hfRoleId.Value = roleId.ToString(); Int32.TryParse(hfRoleId.Value, out roleId); if (roleId > 0) { role = BXRoleManager.GetById(roleId); if (role == null) { roleId = 0; hfRoleId.Value = roleId.ToString(); } } if (roleId <= 0) { string roleName = base.GetRequestString("name"); if (!String.IsNullOrEmpty(roleName)) { role = BXRoleManager.GetByName(roleName); if (role != null) { roleId = role.RoleId; hfRoleId.Value = roleId.ToString(); } } } if (!this.BXUser.IsCanOperate(BXRoleOperation.Operations.AuthorizationSettingsView)) BXAuthentication.AuthenticationRequired(); currentUserCanModifySettings = this.BXUser.IsCanOperate(BXRoleOperation.Operations.AuthorizationSettingsManage); UserOperationsRoles.Items.Clear(); UserOperationsRoles.Items.AddRange(ActiveRolesNonStandard.Select(x => new ListItem(Encode(x.Title), x.RoleId.ToString())).ToArray()); UserOperationsContainer.DataSource = userOperations; UserOperationsContainer.DataBind(); PrepareForInsertScript(); }