public ClientAURole GetAURoleBySchemaRoleID(string unitID, string schemaRoleID, bool normalOnly) { unitID.NullCheck("unitID"); schemaRoleID.NullCheck("schemaRoleID"); AURole result = null; var unit = AUCommon.DoDbProcess(() => (AdminUnit)SchemaObjectAdapter.Instance.Load(unitID)); if (unit != null && normalOnly) { unit = unit.Status == SchemaObjectStatus.Normal ? unit : null; } if (unit != null) { var schemaRole = (AUSchemaRole)AUCommon.DoDbProcess(() => SchemaObjectAdapter.Instance.Load(schemaRoleID)); if (schemaRole != null && normalOnly) { schemaRole = schemaRole.Status == SchemaObjectStatus.Normal ? schemaRole : null; } if (schemaRole != null) { result = AUSnapshotAdapter.Instance.LoadAURole(schemaRole.ID, unitID, normalOnly, SimpleRequestSoapMessage.Current.TimePoint); } } return(result != null ? (ClientAURole)result.ToClientSchemaObject() : null); }
protected override void PrepareData(AUObjectOperationContext context) { AUCommon.DoDbAction(() => { actualSchemaRole = (AUSchemaRole)SchemaObjectAdapter.Instance.Load(schemaRole.ID); if (actualSchemaRole.Status != Schemas.SchemaProperties.SchemaObjectStatus.Normal) { throw new AUStatusCheckException(actualSchemaRole, this.OperationType); } this.actualUnit = (AdminUnit)SchemaObjectAdapter.Instance.Load(this.unit.ID); if (this.actualUnit == null || this.actualUnit.Status != Schemas.SchemaProperties.SchemaObjectStatus.Normal) { throw new AUStatusCheckException(actualUnit, this.OperationType); } this.actualUnitRole = Adapters.AUSnapshotAdapter.Instance.LoadAURole(actualSchemaRole.ID, actualUnit.ID, true, DateTime.MinValue); if (actualUnitRole == null || actualUnitRole.Status != Schemas.SchemaProperties.SchemaObjectStatus.Normal) { throw new AUStatusCheckException(actualUnitRole, this.OperationType); } var roleMemberRelations = SCMemberRelationAdapter.Instance.LoadByContainerID(this.actualUnitRole.ID); Dictionary <string, SCUser> userDic = users.ToDictionary(m => m.ID); foreach (var item in roleMemberRelations) { if (item.Status == Schemas.SchemaProperties.SchemaObjectStatus.Normal) { if (userDic.ContainsKey(item.ID)) { userDic.Remove(item.ID); } else { pendingActions.Add(new RemoveRelationAction(item)); } } } foreach (SCUser user in userDic.Values) { pendingActions.Add(new AddRelationAction(this.actualUnitRole, user)); } }); }
protected override void PrepareData(AUObjectOperationContext context) { AUCommon.DoDbAction(() => { actualSchemaRole = (AUSchemaRole)SchemaObjectAdapter.Instance.Load(schemaRole.ID); if (actualSchemaRole.Status != Schemas.SchemaProperties.SchemaObjectStatus.Normal) throw new AUStatusCheckException(actualSchemaRole, this.OperationType); this.actualUnit = (AdminUnit)SchemaObjectAdapter.Instance.Load(this.unit.ID); if (this.actualUnit == null || this.actualUnit.Status != Schemas.SchemaProperties.SchemaObjectStatus.Normal) throw new AUStatusCheckException(actualUnit, this.OperationType); this.actualUnitRole = Adapters.AUSnapshotAdapter.Instance.LoadAURole(actualSchemaRole.ID, actualUnit.ID, true, DateTime.MinValue); if (actualUnitRole == null || actualUnitRole.Status != Schemas.SchemaProperties.SchemaObjectStatus.Normal) throw new AUStatusCheckException(actualUnitRole, this.OperationType); var roleMemberRelations = SCMemberRelationAdapter.Instance.LoadByContainerID(this.actualUnitRole.ID); Dictionary<string, SCUser> userDic = users.ToDictionary(m => m.ID); foreach (var item in roleMemberRelations) { if (item.Status == Schemas.SchemaProperties.SchemaObjectStatus.Normal) { if (userDic.ContainsKey(item.ID)) { userDic.Remove(item.ID); } else { pendingActions.Add(new RemoveRelationAction(item)); } } } foreach (SCUser user in userDic.Values) { pendingActions.Add(new AddRelationAction(this.actualUnitRole, user)); } }); }
private void PrepareRolesForAdd() { foreach (AUSchemaRole sr in this.existingSchemaRoles) { bool enableRole = sr.Status == SchemaObjectStatus.Normal; AURole existingRole = AUCommon.FindMatchRole(this.existingUnitRoles, sr); AURole inputRole = this.InputRoles != null?AUCommon.FindMatchRole(this.InputRoles, sr) : null; if (inputRole != null && existingRole != null && inputRole.ID != existingRole.ID) { throw new AUObjectException(string.Format("导入的角色{0}与现有角色{1}的ID不一致,导致无法继续执行导入。", inputRole.ID, existingRole.ID)); } if (existingRole == null) { if (inputRole == null) { inputRole = new AURole() { ID = UuidHelper.NewUuidString(), SchemaRoleID = sr.ID, Status = SchemaObjectStatus.Normal } } ; inputRole.Status = SchemaObjectStatus.Normal; if (enableRole == false) { inputRole.Status = SchemaObjectStatus.Deleted; } pendingActions.Add(new AddMemberAction((AdminUnit)this.Data, inputRole)); } else if (existingRole.Status != sr.Status) { pendingActions.Add(sr.Status == SchemaObjectStatus.Normal ? (IPendingAction) new EnableMemberAction(existingRole, (AdminUnit)this.Data) : new RemoveMemberAction((AdminUnit)this.Data, existingRole)); } } }
public void AddAdminUnitWithMembers(ClientAdminUnit unit, ClientAdminUnit parent, ClientAURole[] roles, ClientAUAdminScope[] scopes) { roles.NullCheck("roles"); scopes.NullCheck("scopes"); CheckIDProvided(unit); AURole[] auRoles = new AURole[roles.Length]; for (int i = roles.Length - 1; i >= 0; i--) { auRoles[i] = (AURole)roles[i].ToSchemaObject(); } AUAdminScope[] auScopes = new AUAdminScope[scopes.Length]; for (int i = scopes.Length - 1; i >= 0; i--) { auScopes[i] = (AUAdminScope)scopes[i].ToSchemaObject(); } EnsureID(unit); AdminUnit auParent = parent != null ? (AdminUnit)parent.ToSchemaObject(true) : null; this.Facade.AddAdminUnitWithMembers((AdminUnit)unit.ToSchemaObject(false), auParent, auRoles, auScopes); }
private void PrepareRolesForAdd() { foreach (AUSchemaRole sr in this.existingSchemaRoles) { bool enableRole = sr.Status == SchemaObjectStatus.Normal; AURole existingRole = AUCommon.FindMatchRole(this.existingUnitRoles, sr); AURole inputRole = this.InputRoles != null ? AUCommon.FindMatchRole(this.InputRoles, sr) : null; if (inputRole != null && existingRole != null && inputRole.ID != existingRole.ID) throw new AUObjectException(string.Format("导入的角色{0}与现有角色{1}的ID不一致,导致无法继续执行导入。", inputRole.ID, existingRole.ID)); if (existingRole == null) { if (inputRole == null) inputRole = new AURole() { ID = UuidHelper.NewUuidString(), SchemaRoleID = sr.ID, Status = SchemaObjectStatus.Normal }; inputRole.Status = SchemaObjectStatus.Normal; if (enableRole == false) { inputRole.Status = SchemaObjectStatus.Deleted; } pendingActions.Add(new AddMemberAction((AdminUnit)this.Data, inputRole)); } else if (existingRole.Status != sr.Status) { pendingActions.Add(sr.Status == SchemaObjectStatus.Normal ? (IPendingAction)new EnableMemberAction(existingRole, (AdminUnit)this.Data) : new RemoveMemberAction((AdminUnit)this.Data, existingRole)); } } }
public void AddAdminUnitWithMembers(AdminUnit unit, AdminUnit parent, AURole[] roles, AUAdminScope[] scopes) { if (parent == null) CheckAUSchemaPermission(unit.GetUnitSchema()); else CheckUnitPermission(AUOperationType.AddAdminUnit, "AddSubUnit", parent); AdminUnitExecutor executor = new Executors.AdminUnitExecutor(AUOperationType.AddAdminUnit, parent, unit) { NeedValidation = this.NeedValidationAndStatusCheck, NeedParentStatusCheck = this.NeedValidationAndStatusCheck, InputRoles = roles, InputAdminScopes = scopes }; ExecuteWithActions(AUOperationType.AddAdminUnit, () => SCActionContext.Current.DoActions(() => { executor.Execute(); })); }