private void permissionCheckBox_CheckedChanged(object sender, EventArgs e) { CheckBox chkBox = sender as CheckBox; if (chkBox != null) { // Find out which permission has changed Permission permission = Permission.None; foreach (Permission p in Enum.GetValues(typeof(Permission))) { if (chkBox.Name.Contains(SecurityDemoHelper.GetPermissionString(p))) { permission = p; break; } } // Check if the permission is set char domainName = (char)cboDomain.SelectedItem; SecurityAccess access = chkBox.Name.Contains("View") ? SecurityAccess.View : SecurityAccess.Modify; bool permissionGranted = owner.SecurityManager.IsGranted(permission, access, domainName); // Update only if the granted state changed if (permissionGranted != chkBox.Checked) { StandardRole role = (StandardRole)cboUser.SelectedItem; // Set General or Domain permissions if (permission == Permission.Designs || permission == Permission.Security || permission == Permission.Templates) { if (chkBox.Checked) { owner.SecurityManager.AddPermissions(role, permission, access); } else { owner.SecurityManager.RemovePermissions(role, permission, access); } } else { if (chkBox.Checked) { owner.SecurityManager.AddPermissions(domainName, role, permission, access); } else { owner.SecurityManager.RemovePermissions(domainName, role, permission, access); } } UpdateSecurityControls(); } } }
private void UpdateDomainPermissionCtrls(IEnumerable <ISecurityDomainObject> securityObjects, Type objType) { lblCurrentSecObj.Text = (objType != null) ? objType.Name : string.Empty; string currObjDom = string.Empty; if (securityObjects != null) { foreach (ISecurityDomainObject obj in securityObjects) { if (obj == null) { continue; } if (currObjDom.IndexOf(obj.SecurityDomainName) < 0) { currObjDom += string.Format("{0}{1}", string.IsNullOrEmpty(currObjDom) ? "" : ", ", obj.SecurityDomainName); } } lblCurrentDomain.Text = currObjDom; } string currGenPermissions = string.Empty; string currDomPermissions = string.Empty; foreach (Permission permission in Enum.GetValues(typeof(Permission))) { switch (permission) { case Permission.All: case Permission.None: // Nothing to do break; case Permission.Designs: case Permission.Security: case Permission.Templates: // Update effective permissions if (!string.IsNullOrEmpty(currGenPermissions)) { currGenPermissions += ", "; } currGenPermissions += SecurityDemoHelper.GetPermissionString(permission); break; case Permission.Connect: case Permission.Data: case Permission.Delete: case Permission.Insert: case Permission.Layout: case Permission.Present: if (securityObjects != null) { if (SecurityManager.IsGranted(permission, securityObjects)) { if (!string.IsNullOrEmpty(currDomPermissions)) { currDomPermissions += ", "; } currDomPermissions += SecurityDemoHelper.GetPermissionString(permission); } } break; default: Debug.Fail("Unhandled Permission!"); break; } } if (string.IsNullOrEmpty(currGenPermissions)) { currGenPermissions = Permission.None.ToString(); } lblCurrentGenPerm.Text = currGenPermissions; if (string.IsNullOrEmpty(currDomPermissions)) { currDomPermissions = Permission.None.ToString(); } lblCurrentDomPerm.Text = currDomPermissions; }