private void ApplyEnabledPrivileges(PrivilegeTypes enabledPrivileges) { bool isNone = (enabledPrivileges & PrivilegeTypes.None) != PrivilegeTypes.None; if (isNone || (enabledPrivileges & PrivilegeTypes.Select) != PrivilegeTypes.Select) { chkSelect.Enabled = false; } if (isNone || (enabledPrivileges & PrivilegeTypes.Execute) != PrivilegeTypes.Execute) { chkExecute.Enabled = false; } if (isNone || (enabledPrivileges & PrivilegeTypes.Refs) != PrivilegeTypes.Refs) { chkRefs.Enabled = false; } if (isNone || (enabledPrivileges & PrivilegeTypes.Insert) != PrivilegeTypes.Insert) { chkInsert.Enabled = false; } if (isNone || (enabledPrivileges & PrivilegeTypes.Update) != PrivilegeTypes.Update) { chkUpdate.Enabled = false; } if (isNone || (enabledPrivileges & PrivilegeTypes.Delete) != PrivilegeTypes.Delete) { chkDelete.Enabled = false; } }
public bool HasEntityPrivilege(PAUser user, EntityReference entityId, PrivilegeTypes privilegeType) { var metaDateType = _paMetadataServiceCacheProxy.GetEntityMetadata(entityId.LogicalName); if (metaDateType.OwnershipType.HasValue) { switch (metaDateType.OwnershipType.Value) { case Microsoft.Xrm.Sdk.Metadata.OwnershipTypes.UserOwned: RetrievePrincipalAccessRequest request = new RetrievePrincipalAccessRequest(); request.Principal = new EntityReference("systemuser", user.EntityRecord.Id); request.Target = entityId; IOrganizationService orgService = ContextContainer.GetValue <IOrganizationService>(ContextTypes.OrgService); var response = (RetrievePrincipalAccessResponse)orgService.Execute(request); if (response.AccessRights.HasFlag((AccessRights)(int)privilegeType)) { return(true); } else { return(false); } case Microsoft.Xrm.Sdk.Metadata.OwnershipTypes.OrganizationOwned: var result = HasEntityPrivilege(user, entityId.LogicalName, privilegeType, PrivilegeDepths.Basic); return(result); default: return(false); } } else { var fragment = new TextFragment() { Code = TextCodes.EntityNotCheckPrivilege, DefaultFormatting = "实体{0}无法判断权限,它的OwnershipType为空", ReplaceParameters = new List <object>() { entityId.LogicalName } }; throw new UtilityException((int)Errors.EntityNotCheckPrivilege, fragment); } }
public static bool ShowChangePrivilegesDlg(PrivilegeTypes enabledPrivileges, ref PrivilegeTypes result) { frmChangePrivileges frm = new frmChangePrivileges(); frm.ApplyEnabledPrivileges(enabledPrivileges); if (frm.ShowDialog() == DialogResult.OK) { result = frm.GetSelectedPrivileges(); return(true); } else { result = PrivilegeTypes.None; return(false); } }
private PrivilegeTypes GetSelectedPrivileges() { PrivilegeTypes result = PrivilegeTypes.None; if (chkSelect.Checked) { result = result | PrivilegeTypes.Select; } if (chkExecute.Checked) { result = result | PrivilegeTypes.Execute; } if (chkRefs.Checked) { result = result | PrivilegeTypes.Refs; } if (chkInsert.Checked) { result = result | PrivilegeTypes.Insert; } if (chkUpdate.Checked) { result = result | PrivilegeTypes.Update; } if (chkDelete.Checked) { result = result | PrivilegeTypes.Delete; } return(result); }
private PrivilegeTypes GetVisiblePrivilegeTypes() { PrivilegeTypes result = PrivilegeTypes.None; if (colselect.Visible) { result = result | PrivilegeTypes.Select; } if (colexecute.Visible) { result = result | PrivilegeTypes.Execute; } if (colreferences.Visible) { result = result | PrivilegeTypes.Refs; } if (colinsert.Visible) { result = result | PrivilegeTypes.Insert; } if (colupdate.Visible) { result = result | PrivilegeTypes.Update; } if (coldelete.Visible) { result = result | PrivilegeTypes.Delete; } return(result); }
public bool HasEntityPrivilege(PAUser user, string EntityName, PrivilegeTypes privilegeType, PrivilegeDepths privilegeDepth) { if (EntityName.ToLower().Equals("systemuser")) { EntityName = "user"; } PrivilegeDepths enumMark = PrivilegeDepths.None; StringBuilder strPrivilegeName = new StringBuilder("prv"); strPrivilegeName.Append(privilegeType.ToString()); strPrivilegeName.Append(EntityName); string privilegeName = strPrivilegeName.ToString(); IOrganizationService orgService = ContextContainer.GetValue <IOrganizationService>(ContextTypes.OrgService.ToString()); string strFetch = string.Format(@"<fetch version=""1.0"" output-format=""xml - platform"" mapping=""logical"" distinct=""false"" aggregate=""true""> <entity name = ""privilege"" > <link-entity name=""roleprivileges"" intersect=""true"" visible=""false"" to=""privilegeid"" from=""privilegeid"" alias = ""aa""> <attribute name=""privilegedepthmask"" alias=""maxmask"" aggregate=""max""/> <link-entity name = ""role"" to = ""roleid"" from = ""parentrootroleid"" alias = ""ad"" > <link-entity name = ""systemuserroles"" to = ""roleid"" from = ""roleid"" alias = ""ab"" > <link-entity name = ""systemuser"" to = ""systemuserid"" from = ""systemuserid"" alias = ""ac"" > <filter type = ""and"" > <condition attribute=""systemuserid"" value=""{1}"" operator=""eq"" uitype=""systemuser"" /> </filter> </link-entity> </link-entity> </link-entity> </link-entity> <filter type = ""and"" > <condition attribute = ""name"" value = ""{2}"" operator= ""eq"" /> </filter> </entity> </fetch>", ((int)privilegeDepth).ToString(), user.EntityRecord.Id.ToString(), strPrivilegeName); var entityCollection = orgService.RetrieveMultiple(new FetchExpression(strFetch)); if (entityCollection.Entities.Count > 0) { var mask = (AliasedValue)entityCollection.Entities[0].Attributes["maxmask"]; if (mask.Value == null) { return(false); } enumMark = (PrivilegeDepths)mask.Value; } if (enumMark != PrivilegeDepths.None && (int)enumMark >= (int)privilegeDepth) { return(true); } else { return(false); } }
private void ChangeSelectedObjectPrivileges() { if (grd.SelectedRows.Count == 0) { return; } PrivilegeTypes result = PrivilegeTypes.None; if (!frmChangePrivileges.ShowChangePrivilegesDlg(GetVisiblePrivilegeTypes(), ref result)) { return; } foreach (DataGridViewRow row in grd.SelectedRows) { bool isNone = (result & PrivilegeTypes.None) != PrivilegeTypes.None; if (colselect.Visible) { if (isNone || (result & PrivilegeTypes.Select) != PrivilegeTypes.Select) { row.Cells[colselect.Name].Value = false; } else { row.Cells[colselect.Name].Value = true; } } if (colexecute.Visible) { if (isNone || (result & PrivilegeTypes.Execute) != PrivilegeTypes.Execute) { row.Cells[colexecute.Name].Value = false; } else { row.Cells[colexecute.Name].Value = true; } } if (colreferences.Visible) { if (isNone || (result & PrivilegeTypes.Refs) != PrivilegeTypes.Refs) { row.Cells[colreferences.Name].Value = false; } else { row.Cells[colreferences.Name].Value = true; } } if (colinsert.Visible) { if (isNone || (result & PrivilegeTypes.Insert) != PrivilegeTypes.Insert) { row.Cells[colinsert.Name].Value = false; } else { row.Cells[colinsert.Name].Value = true; } } if (colupdate.Visible) { if (isNone || (result & PrivilegeTypes.Update) != PrivilegeTypes.Update) { row.Cells[colupdate.Name].Value = false; } else { row.Cells[colupdate.Name].Value = true; } } if (coldelete.Visible) { if (isNone || (result & PrivilegeTypes.Delete) != PrivilegeTypes.Delete) { row.Cells[coldelete.Name].Value = false; } else { row.Cells[coldelete.Name].Value = true; } } } }