public void AddUserToGroupExecutorTest() { SCGroup group = SCObjectGenerator.PrepareGroupObject(); SCObjectOperations.Instance.AddGroup(group, SCOrganization.GetRoot()); SCUser user1 = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user1, SCOrganization.GetRoot()); SCMemberRelation mr = SCObjectOperations.Instance.AddUserToGroup(user1, group); Assert.AreEqual(group.SchemaType, mr.ContainerSchemaType); Assert.AreEqual(user1.SchemaType, mr.MemberSchemaType); SCUser user2 = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user2, SCOrganization.GetRoot()); SCObjectOperations.Instance.AddUserToGroup(user2, group); Assert.AreEqual(2, group.CurrentUsers.Count); Assert.IsTrue(group.CurrentUsers.ContainsKey(user1.ID)); Assert.IsTrue(group.CurrentUsers.ContainsKey(user2.ID)); Assert.IsTrue(user1.CurrentGroups.ContainsKey(group.ID)); Assert.IsTrue(user2.CurrentGroups.ContainsKey(group.ID)); SameContainerUserAndContainerSnapshotCollection ugSnapshot = UserAndContainerSnapshotAdapter.Instance.LoadByContainerID(group.ID); Assert.IsTrue(ugSnapshot.ContainsKey(user1.ID)); Assert.IsTrue(ugSnapshot.ContainsKey(user2.ID)); }
public void SimpleConditionTest() { SCConditionOwner owner = new SCConditionOwner(); SCUser user1 = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user1, SCOrganization.GetRoot()); SCUser user2 = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user2, SCOrganization.GetRoot()); owner.OwnerID = UuidHelper.NewUuidString(); string expression = string.Format("Users.CodeName == \"{0}\"", user2.CodeName); owner.Conditions.Add(new SCCondition() { Description = "基本测试", Condition = expression }); SCConditionCalculator calculator = new SCConditionCalculator(); IEnumerable <SchemaObjectBase> result = calculator.Calculate(owner); Assert.AreEqual(1, result.Count()); foreach (SchemaObjectBase obj in result) { Console.WriteLine("ID:{0}, Name: {1}", obj.ID, obj.Properties.GetValue("Name", string.Empty)); } }
public void SetUserDefaultOrganizationTest() { SCUser user = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user, null); SCUser userLoaded = (SCUser)SchemaObjectAdapter.Instance.Load(user.ID); SCOrganization root = SCOrganization.GetRoot(); SCOrganization org1 = SCObjectGenerator.PrepareOrganizationObject(); SCObjectOperations.Instance.AddOrganization(org1, root); SCOrganization org2 = SCObjectGenerator.PrepareOrganizationObject(); SCObjectOperations.Instance.AddOrganization(org2, root); SCObjectOperations.Instance.AddUserToOrganization(user, org1); SCObjectOperations.Instance.AddUserToOrganization(user, org2); SCObjectOperations.Instance.SetUserDefaultOrganization(user, org2); SCRelationObject relation1 = SchemaRelationObjectAdapter.Instance.Load(org1.ID, userLoaded.ID); SCRelationObject relation2 = SchemaRelationObjectAdapter.Instance.Load(org2.ID, userLoaded.ID); Assert.IsFalse(relation1.Default); Assert.IsTrue(relation2.Default); }
public void AddOrRemoveUserToGroupExecutorTest() { SCGroup group = SCObjectGenerator.PrepareGroupObject(); SCObjectOperations.Instance.AddGroup(group, SCOrganization.GetRoot()); SCUser user1 = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user1, SCOrganization.GetRoot()); Console.WriteLine("UserID: {0}, GroupID: {1}", user1.ID, group.ID); SCMemberRelation mr = SCObjectOperations.Instance.AddUserToGroup(user1, group); SCObjectOperations.Instance.RemoveUserFromGroup(user1, group); // 确认删除 Assert.IsFalse(group.CurrentMembersRelations.ContainsKey(user1.ID)); Assert.IsFalse(user1.CurrentMemberOfRelations.ContainsKey(group.ID)); SCObjectOperations.Instance.AddUserToGroup(user1, group); // 重置数据 group.ClearRelativeData(); user1.ClearRelativeData(); // 确认又加回来了 Assert.IsTrue(group.CurrentUsers.ContainsKey(user1.ID)); Assert.IsTrue(user1.CurrentGroups.ContainsKey(group.ID)); Console.WriteLine("UserID: {0}, GroupID: {1}", user1.ID, group.ID); }
public void RemoveUserFromRole(SCUser user, AdminUnit unit, AUSchemaRole role) { CheckUnitPermission(AUOperationType.RemoveUserFromRole, "EditRoleMembers", unit); SchemaObjectBase r = Adapters.AUSnapshotAdapter.Instance.LoadAURole(role.ID, unit.ID, true, DateTime.MinValue); if (r == null) { throw new AUObjectValidationException("没有找到此管理单元的角色,请尝试重新添加此角色"); } AUMemberRelativeExecutor executor = new AUMemberRelativeExecutor(AUOperationType.RemoveUserFromRole, r, user) { OverrideExistedRelation = true, SaveTargetData = false, NeedStatusCheck = false, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck, }; executor.Relation.Status = SchemaObjectStatus.Deleted; SCMemberRelation result = null; ExecuteWithActions(AUOperationType.RemoveUserFromRole, () => SCActionContext.Current.DoActions(() => result = (SCMemberRelation)executor.Execute())); }
public SchemaObjectBase AddUser(SCUser user, SCOrganization parent) { SCObjectExecutor executor = null; if (parent == null) { if (this._NeedCheckPermissions) { CheckSupervisorPermissions(SCOperationType.AddUser); } executor = new SCObjectExecutor(SCOperationType.AddUser, user) { NeedValidation = this.NeedValidationAndStatusCheck }; } else { if (this._NeedCheckPermissions) { CheckPermissions(SCOperationType.AddUser, parent.Schema, "AddChildren", parent.ID); } executor = new SCOrganizationRelativeExecutor(SCOperationType.AddUser, parent, user) { SaveTargetData = true, NeedValidation = this.NeedValidationAndStatusCheck, NeedParentStatusCheck = this.NeedValidationAndStatusCheck }; } SchemaObjectBase result = null; ExecuteWithActions(SCOperationType.AddUser, () => SCActionContext.Current.DoActions(() => result = (SchemaObjectBase)executor.Execute())); return(result); }
public void AddSecretaryToUserExecutorTest() { SCUser secretary = SCObjectGenerator.PrepareUserObject("罗", "剑", "罗剑" + UuidHelper.NewUuidString()); SCObjectOperations.Instance.AddUser(secretary, SCOrganization.GetRoot()); SCUser user1 = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user1, SCOrganization.GetRoot()); SCSecretaryRelation sr = SCObjectOperations.Instance.AddSecretaryToUser(secretary, user1); Assert.AreEqual(secretary.SchemaType, sr.ContainerSchemaType); Assert.AreEqual(user1.SchemaType, sr.MemberSchemaType); SCUser user2 = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user2, SCOrganization.GetRoot()); SCObjectOperations.Instance.AddSecretaryToUser(secretary, user2); Assert.IsTrue(user1.CurrentSecretaries.ContainsKey(secretary.ID)); Assert.IsTrue(user2.CurrentSecretaries.ContainsKey(secretary.ID)); Assert.IsTrue(secretary.CurrentSecretariesOf.ContainsKey(user1.ID)); Assert.IsTrue(secretary.CurrentSecretariesOf.ContainsKey(user2.ID)); }
/// <summary> /// 解除某人的秘书关系 /// </summary> /// <param name="secretary"></param> /// <param name="user"></param> /// <returns></returns> public SCSecretaryRelation RemoveSecretaryFromUser(SCUser secretary, SCUser user) { SCMemberRelativeExecutor executor = new SCMemberRelativeExecutor(SCOperationType.RemoveSecretaryFromUser, user, secretary) { OverrideExistedRelation = true, NeedStatusCheck = this.NeedValidationAndStatusCheck, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck }; if (this._NeedCheckPermissions) { var hereParents = secretary.CurrentParentRelations; var thereParents = user.CurrentParentRelations; var hereIds = (from p in hereParents where p.Status == SchemaObjectStatus.Normal select p.ParentID).ToArray(); var thereIds = (from p in thereParents where p.Status == SchemaObjectStatus.Normal select p.ParentID).ToArray(); CheckPermissions(SCOperationType.RemoveSecretaryFromUser, SchemaDefine.GetSchema("Organizations"), "UpdateChildren", hereIds); CheckPermissions(SCOperationType.RemoveSecretaryFromUser, SchemaDefine.GetSchema("Organizations"), "UpdateChildren", thereIds); } executor.Relation.Status = SchemaObjectStatus.Deleted; SCSecretaryRelation result = null; ExecuteWithActions(SCOperationType.RemoveSecretaryFromUser, () => SCActionContext.Current.DoActions(() => result = (SCSecretaryRelation)executor.Execute())); return(result); }
private bool IsChildAllFunction(BuiltInFunctionIDType idType, string parentID, SCConditionCalculatingContext callerContext) { parentID.CheckStringIsNullOrEmpty("parentID"); bool result = false; SCUser currentUser = (SCUser)callerContext.CurrentObject; switch (idType) { case BuiltInFunctionIDType.CodeName: result = currentUser.CurrentParents.AllAndNotEmpty(p => string.Compare(p.Properties.GetValue("CodeName", string.Empty), parentID, true) == 0); break; case BuiltInFunctionIDType.Guid: result = currentUser.CurrentParentRelations.AllAndNotEmpty(r => string.Compare(r.ParentID, parentID, true) == 0); break; case BuiltInFunctionIDType.FullPath: { SCObjectAndRelation parent = GetObjectByID(idType, parentID, callerContext); if (parent != null) { result = currentUser.CurrentParentRelations.AllAndNotEmpty(r => string.Compare(r.ParentID, parent.ID, true) == 0); } break; } default: throw new NotSupportedException(string.Format("不支持的BuiltInFunctionIDType类型{0}", idType)); } return(result); }
public void MoveUserNotChangeOwnerTest() { SCOrganization root = SCOrganization.GetRoot(); SCUser user = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user, root); SCOrganization sidelineOrg = SCObjectGenerator.PrepareOrganizationObject(); SCObjectOperations.Instance.AddOrganization(sidelineOrg, root); //设置了兼职 SCObjectOperations.Instance.AddUser(user, sidelineOrg); SCOrganization targetOrg = SCObjectGenerator.PrepareOrganizationObject(); SCObjectOperations.Instance.AddOrganization(targetOrg, root); SCObjectOperations.Instance.MoveObjectToOrganization(sidelineOrg, user, targetOrg); user = (SCUser)SchemaObjectAdapter.Instance.Load(user.ID); user.ClearRelativeData(); targetOrg.ClearRelativeData(); sidelineOrg.ClearRelativeData(); root.ClearRelativeData(); Assert.IsTrue(user.CurrentParents.ContainsKey(targetOrg.ID)); Assert.IsTrue(targetOrg.CurrentChildren.ContainsKey(user.ID)); Assert.IsFalse(sidelineOrg.CurrentChildren.ContainsKey(user.ID)); Assert.AreNotEqual(targetOrg.ID, user.OwnerID); }
public void ChangeOwnerTest() { SCOrganization root = SCOrganization.GetRoot(); SCUser user = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user, root); SCOrganization sidelineOrg = SCObjectGenerator.PrepareOrganizationObject(); SCObjectOperations.Instance.AddOrganization(sidelineOrg, root); //设置了兼职 SCObjectOperations.Instance.AddUser(user, sidelineOrg); SCObjectOperations.Instance.ChangeOwner(user, sidelineOrg); user = (SCUser)SchemaObjectAdapter.Instance.Load(user.ID); user.ClearRelativeData(); sidelineOrg.ClearRelativeData(); root.ClearRelativeData(); Console.WriteLine(user.OwnerName); Assert.AreEqual(sidelineOrg.ID, user.OwnerID); }
public SCOrganizationRelativeExecutor(SCOperationType opType, SCOrganization parent, SCBase data) : base(opType, data) { parent.NullCheck("organization"); data.ClearRelativeData(); parent.ClearRelativeData(); this._Parent = parent; this._Relation = PrepareRelationObject(parent, data); if (this.OperationType == SCOperationType.AddOrganization) { this._AclContainer = PrepareAclContainer(parent, data); } if (data is SCUser) { this._TargetParentRelations = data.CurrentParentRelations; if (this.OperationType == SCOperationType.AddUser && this._TargetParentRelations.Count == 0) { SCUser user = (SCUser)data; user.OwnerID = parent.ID; user.OwnerName = parent.Properties.GetValue("Name", string.Empty); } } }
protected void Button2_Click(object sender, EventArgs e) { Random r = new Random(); String msg = ""; for (int i = 1; i <= int.Parse(tbNumstudents.Text); i++) { SCUser u = new SCUser(); u.SCode = int.Parse(hdnstudy.Value); String rnduid = ""; String rndpwd = ""; for (int j = 1; j <= 5; j++) { rnduid += (char)(65 + r.Next(26)); rndpwd += (char)(65 + r.Next(26)); } u.SCEmailid = rnduid; u.SCPassword = rndpwd; msg += rnduid + " , " + rndpwd; msg += "\r\n"; se1.SCUsers.Add(u); } se1.SaveChanges(); TextBox1.Text = msg; }
/// <summary> /// 设置用户的默认组织 /// </summary> /// <param name="user"></param> /// <param name="parent"></param> /// <returns></returns> public SCRelationObject SetUserDefaultOrganization(SCUser user, SCOrganization parent) { SCOrganizationRelativeExecutor executor = new SCOrganizationRelativeExecutor(SCOperationType.SetUserDefaultOrganization, parent, user) { OverrideExistedRelation = true, OverrideDefault = true, NeedStatusCheck = this.NeedValidationAndStatusCheck, NeedParentStatusCheck = this.NeedValidationAndStatusCheck }; SCRelationObject result = executor.Relation; if (executor.RelationExisted) { if (this._NeedCheckPermissions) { var currentDefault = user.CurrentParentRelations.Where(r => r.Default && r.Status == SchemaObjectStatus.Normal).FirstOrDefault(); if (currentDefault != null) { CheckPermissions(SCOperationType.SetUserDefaultOrganization, SchemaDefine.GetSchema("Organizations"), "UpdateChildren", currentDefault.ParentID); } CheckPermissions(SCOperationType.SetUserDefaultOrganization, SchemaDefine.GetSchema("Organizations"), "UpdateChildren", executor.Relation.ParentID); } executor.Relation.Default = true; ExecuteWithActions(SCOperationType.SetUserDefaultOrganization, () => SCActionContext.Current.DoActions(() => result = (SCRelationObject)executor.Execute())); } return(result); }
public User Convert(SCUser user) { if (user == null) { return(null); } return(new User { Id = user.Id, Permalink = user.Permalink, UserName = user.UserName, Uri = user.Uri, PermalinkUrl = user.PermalinkUrl, AvatarUrl = user.Avatar == null ? null : user.Avatar.Url(), Country = user.Country, FullName = user.FullName, City = user.City, Description = user.Description, Discogs = user.Discogs, Myspace = user.Myspace, Website = user.WebsiteUrl, WebsiteTitle = user.WebsiteTitle, IsOnline = user.IsOnline, TrackCount = user.TrackCount, EmailConfirmed = user.EmailConfirmed, FavoriteCount = user.FavoriteCount, FollowerCount = user.FollowerCount, FollowingCount = user.FollowingCount, Plan = user.Plan, PlaylistCount = user.PlaylistCount, PrivatePlaylistCount = user.PrivatePlaylistCount, PrivateTrackCount = user.PrivateTrackCount }); }
public void SCQueryPermissionsByUserIDsSnapshotTest() { SCApplication application = SCObjectGenerator.PrepareApplicationObject(); SCObjectOperations.Instance.AddApplication(application); SCRole role = SCObjectGenerator.PrepareRoleObject(); SCObjectOperations.Instance.AddRole(role, application); SCPermission permission = SCObjectGenerator.PreparePermissionObject(); SCObjectOperations.Instance.AddPermission(permission, application); SCRelationObject relation = SCObjectOperations.Instance.JoinRoleAndPermission(role, permission); SCUser user1 = SCObjectGenerator.PrepareUserObject("RU1", "User1", "RoleUser1"); SCObjectOperations.Instance.AddUser(user1, SCOrganization.GetRoot()); SCObjectOperations.Instance.AddMemberToRole(user1, role); SchemaObjectCollection result = SCSnapshotAdapter.Instance.QueryPermissionsByUserIDs(new string[] { user1.ID }, false, DateTime.MinValue); Assert.IsTrue(result.Count > 0); Console.WriteLine(result[0].Properties.GetValue("Name", string.Empty)); Assert.AreEqual(permission.ID, result[0].ID); }
public void UpdateOrganizationNameTest() { SCOrganization root = SCOrganization.GetRoot(); SCOrganization newOrg = SCObjectGenerator.PrepareOrganizationObject(); SCUser user = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddOrganization(newOrg, root); SchemaObjectBase objLoaded = SchemaObjectAdapter.Instance.Load(newOrg.ID); Assert.AreEqual(newOrg.Name, objLoaded.Properties.GetValue("Name", string.Empty)); Assert.IsTrue(objLoaded.CurrentParents.Count > 0); Assert.AreEqual(root.ID, objLoaded.CurrentParents[0].ID); SCObjectOperations.Instance.AddUser(user, newOrg); newOrg.ClearRelativeData(); newOrg.Name = "ChangedOrgName"; SCObjectOperations.Instance.UpdateOrganization(newOrg); Console.WriteLine("Org ID: {0}, User ID: {1}", newOrg.ID, user.ID); }
public void QueryDirectChildrenTest() { SCUser user = SCObjectGenerator.PrepareUserObject(); string ticks = DateTime.Now.Ticks.ToString(); SCOrganization parent3 = SCObjectGenerator.PrepareOrganizationObject("第三组织" + ticks, "第三组织"); SCObjectOperations.Instance.AddOrganization(parent3, SCOrganization.GetRoot()); SCOrganization parent32 = SCObjectGenerator.PrepareOrganizationObject("第三.二组织" + ticks, "第三.二组织"); SCObjectOperations.Instance.AddOrganization(parent32, parent3); SCUser user3 = SCObjectGenerator.PrepareUserObject("李", "琪" + ticks, "liqi"); SCObjectOperations.Instance.AddUser(user3, parent32); string path = string.Format(@"第三组织{0}\第三.二组织{0}\李琪{0}", ticks); SCObjectAndRelationCollection result = SCSnapshotAdapter.Instance.QueryObjectAndRelationByParentIDs(new string[0], new string[] { parent32.ID }, false, true, false, DateTime.MinValue); result.Sort((x, y) => (int)(x.InnerSort - y.InnerSort)); result.FillDetails(); Assert.IsTrue(result.Count > 0); Console.WriteLine(result[0].Detail.Properties.GetValue("Name", string.Empty)); Assert.AreEqual(user3.ID, result[0].Detail.ID); }
private static void PrepareOneLevelTestData(SCOrganization parent, int level, string levelPrefix) { if (level < 4) { for (int i = 0; i < 10; i++) { string newLevelPrefix = string.Format("{0}.{1}", levelPrefix, i); string name = string.Format("第{0}组织", newLevelPrefix); SCOrganization org = PrepareOrganizationObject(name, name); SCObjectOperations.Instance.AddOrganization(org, parent); PrepareOneLevelTestData(org, level + 1, newLevelPrefix); } } else { for (int i = 0; i < 10; i++) { string newLevelPrefix = string.Format("{0}.{1}", levelPrefix, i); string lastName = string.Format("第{0}", newLevelPrefix); SCUser user = PrepareUserObject(lastName, "用户", lastName + "用户"); SCObjectOperations.Instance.AddUser(user, parent); } } }
public void UpdateUserImage() { var userImagePropName = "PhotoKey"; SCUser user = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user, SCOrganization.GetRoot()); ImageProperty image = ImageGenerator.PrepareImage(); image.ResourceID = user.ID; Assert.IsTrue(CanSerialize(image)); SCObjectOperations.Instance.UpdateObjectImageProperty(user, userImagePropName, image); SCUser userLoad = (SCUser)SchemaObjectAdapter.Instance.Load(user.ID); Assert.IsNotNull(userLoad); var imageLoad = JSONSerializerExecute.Deserialize <ImageProperty>(userLoad.Properties[userImagePropName].StringValue); MaterialContentCollection mcc = MaterialContentAdapter.Instance.Load(builder => builder.AppendItem("CONTENT_ID", imageLoad.ID)); Assert.AreEqual(image.Name, imageLoad.Name); Assert.IsNotNull(mcc); Assert.AreEqual(1, mcc.Count); Assert.AreEqual(image.Content.ContentData.Length, mcc[0].ContentData.Length); SCObjectOperations.Instance.UpdateObjectImageProperty(user, userImagePropName, null); userLoad = (SCUser)SchemaObjectAdapter.Instance.Load(user.ID); Assert.AreEqual("", userLoad.Properties[userImagePropName].StringValue); }
public void AddMemberToRoleTest() { SCApplication application = SCObjectGenerator.PrepareApplicationObject(); SCObjectOperations.Instance.AddApplication(application); SCRole role = SCObjectGenerator.PrepareRoleObject(); SCObjectOperations.Instance.AddRole(role, application); SCUser user1 = SCObjectGenerator.PrepareUserObject("RU1", "User1", "RoleUser1"); SCUser user2 = SCObjectGenerator.PrepareUserObject("RU2", "User2", "RoleUser2"); SCObjectOperations.Instance.AddUser(user1, SCOrganization.GetRoot()); SCObjectOperations.Instance.AddUser(user2, SCOrganization.GetRoot()); SCObjectOperations.Instance.AddMemberToRole(user1, role); SCObjectOperations.Instance.AddMemberToRole(user2, role); Assert.AreEqual(2, role.CurrentMembers.Count); Assert.IsTrue(role.CurrentMembers.ContainsKey(user1.ID)); Assert.IsTrue(role.CurrentMembers.ContainsKey(user2.ID)); Assert.IsTrue(user1.CurrentRoles.ContainsKey(role.ID)); Assert.IsTrue(user2.CurrentRoles.ContainsKey(role.ID)); }
public void GetSetSchemaUserPropertiesTest() { SCUser user = SCObjectGenerator.PrepareUserObject(); Assert.AreEqual("Great Shen Zheng", user.Name); Assert.AreEqual("峥", user.FirstName); Assert.AreEqual("沈", user.LastName); }
public virtual void DoAdd(SCUser otherUser, SCUser self) { if (otherUser.ID == self.ID) { throw new HttpException("不能指定自身为秘书"); } this.executor.AddSecretaryToUser(self, otherUser); }
public virtual void DoRemove(SCUser otherUser, SCUser self) { if (otherUser.ID == self.ID) { throw new HttpException("不能指定自身为秘书"); } this.executor.RemoveSecretaryFromUser(self, otherUser); }
public void InheritAclPermissionsTest() { //准备组织数据 SCOrganization parent = SCObjectGenerator.PrepareOrganizationObject(); SCObjectOperations.Instance.AddOrganization(parent, SCOrganization.GetRoot()); //准备应用 SCApplication application = SCObjectGenerator.PrepareApplicationObject(); SCObjectOperations.Instance.AddApplication(application); SCRole role1 = SCObjectGenerator.PrepareRoleObject(); //准备角色 SCObjectOperations.Instance.AddRole(role1, application); //准备人员 SCUser user1 = SCObjectGenerator.PrepareUserObject("RU1", "User1", "RoleUser1"); SCObjectOperations.Instance.AddUser(user1, parent); //将人员添加到角色 SCObjectOperations.Instance.AddMemberToRole(user1, role1); SCRole role2 = SCObjectGenerator.PrepareRoleObject(); //准备角色 SCObjectOperations.Instance.AddRole(role2, application); //准备人员 SCUser user2 = SCObjectGenerator.PrepareUserObject("RU1", "User1", "RoleUser1"); SCObjectOperations.Instance.AddUser(user2, parent); //将人员添加到角色 SCObjectOperations.Instance.AddMemberToRole(user2, role2); //准备Container SCAclContainer container = new SCAclContainer(parent); container.Members.Add("AddChildren", role1); container.Members.Add("AddChildren", role2); SCObjectOperations.Instance.UpdateObjectAcl(container); SCOrganization organization = SCObjectGenerator.PrepareOrganizationObject(); SCObjectOperations.Instance.AddOrganization(organization, parent); SCAclMemberCollection members = SCAclAdapter.Instance.LoadByContainerID(organization.ID, DateTime.MinValue); Assert.IsTrue(members.ContainsKey("AddChildren", role1.ID)); Assert.AreEqual(SchemaObjectStatus.Normal, members["AddChildren", role1.ID].Status); Assert.IsTrue(members.ContainsKey("AddChildren", role2.ID)); Assert.AreEqual(SchemaObjectStatus.Normal, members["AddChildren", role2.ID].Status); }
public void MergeUserInGroupExecutorTest() { // 准备4位用户。User1位状态不变,User2待删除,User3新增加,User4复活 SCGroup group = SCObjectGenerator.PrepareGroupObject(); SCObjectOperations.Instance.AddGroup(group, SCOrganization.GetRoot()); SCUser user1 = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user1, SCOrganization.GetRoot()); SCMemberRelation mr = SCObjectOperations.Instance.AddUserToGroup(user1, group); Assert.AreEqual(group.SchemaType, mr.ContainerSchemaType); Assert.AreEqual(user1.SchemaType, mr.MemberSchemaType); SCUser user2 = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user2, SCOrganization.GetRoot()); SCObjectOperations.Instance.AddUserToGroup(user2, group); SCUser user3 = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user3, SCOrganization.GetRoot()); SCUser user4 = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user4, SCOrganization.GetRoot()); SCObjectOperations.Instance.AddUserToGroup(user4, group); SCObjectOperations.Instance.RemoveUserFromGroup(user4, group); user4.Status = SchemaObjectStatus.Normal; SchemaObjectCollection needMergeUsers = new SchemaObjectCollection() { user1, user3, user4 }; UserAndContainerSnapshotAdapter.Instance.Merge(group.ID, group.SchemaType, needMergeUsers); Console.WriteLine("Group ID: {0}", group.ID); SameContainerUserAndContainerSnapshotCollection ugSnapshot = UserAndContainerSnapshotAdapter.Instance.LoadByContainerID(group.ID); Assert.IsTrue(ugSnapshot.ContainsKey(user1.ID)); Assert.AreEqual(SchemaObjectStatus.Normal, ugSnapshot[user1.ID].Status); Assert.IsTrue(ugSnapshot.ContainsKey(user2.ID)); Assert.AreEqual(SchemaObjectStatus.Deleted, ugSnapshot[user2.ID].Status); Assert.IsTrue(ugSnapshot.ContainsKey(user3.ID)); Assert.AreEqual(SchemaObjectStatus.Normal, ugSnapshot[user3.ID].Status); Assert.IsTrue(ugSnapshot.ContainsKey(user4.ID)); Assert.AreEqual(SchemaObjectStatus.Normal, ugSnapshot[user4.ID].Status); }
public async Task <SCUser> GetUser(string userID) { var url = BASEURL + "/users/" + userID + ".json?client_id=" + this.clientId; var responseString = await this.callAPI(url); SCUser user = JsonConvert.DeserializeObject <SCUser>(responseString); return(user); }
public void DeleteAclMemberTest() { //准备组织数据 SCOrganization organization = SCObjectGenerator.PrepareOrganizationObject(); SCObjectOperations.Instance.AddOrganization(organization, SCOrganization.GetRoot()); //准备应用 SCApplication application = SCObjectGenerator.PrepareApplicationObject(); SCObjectOperations.Instance.AddApplication(application); SCRole role1 = SCObjectGenerator.PrepareRoleObject(); //准备角色 SCObjectOperations.Instance.AddRole(role1, application); //准备人员 SCUser user1 = SCObjectGenerator.PrepareUserObject("RU1", "User1", "RoleUser1"); SCObjectOperations.Instance.AddUser(user1, organization); //将人员添加到角色 SCObjectOperations.Instance.AddMemberToRole(user1, role1); SCRole role2 = SCObjectGenerator.PrepareRoleObject(); //准备角色 SCObjectOperations.Instance.AddRole(role2, application); //准备人员 SCUser user2 = SCObjectGenerator.PrepareUserObject("RU1", "User1", "RoleUser1"); SCObjectOperations.Instance.AddUser(user2, organization); //将人员添加到角色 SCObjectOperations.Instance.AddMemberToRole(user2, role2); //准备Container SCAclContainer container = new SCAclContainer(organization); container.Members.Add("AddChildren", role1); container.Members.Add("AddChildren", role2); SCObjectOperations.Instance.UpdateObjectAcl(container); Console.WriteLine("ContainerID: {0}", container.ContainerID); SCObjectOperations.Instance.DeleteRole(role1); SCObjectOperations.Instance.DeleteRole(role2); SCAclMemberCollection members = SCAclAdapter.Instance.LoadByContainerID(organization.ID, DateTime.MinValue); Assert.IsFalse(members.ContainsKey("AddChildren", role1.ID)); Assert.IsFalse(members.ContainsKey("AddChildren", role2.ID)); }
public AURoleMemberExecutor(AUOperationType opType, AUSchemaRole role, AdminUnit unit, SCUser[] users) : base(opType) { role.NullCheck("role"); users.NullCheck("users"); unit.NullCheck("unit"); this.schemaRole = role; this.users = users; this.unit = unit; }
public static SCUser PrepareUserObject() { SCUser user = new SCUser(); user.ID = UuidHelper.NewUuidString(); user.Name = "Great Shen Zheng"; user.FirstName = "峥"; user.LastName = "沈"; user.CodeName = user.ID; return(user); }
public void ReplaceUsersInRole(ClientGenericObject[] users, ClientAdminUnit unit, ClientAUSchemaRole role) { users.NullCheck("users"); unit.NullCheck("unit"); role.NullCheck("role"); CheckIDProvided(unit); CheckIDProvided(role); SCUser[] scUsers = new SCUser[users.Length]; for (int i = users.Length - 1; i >= 0; i--) { scUsers[i] = (SCUser)users[i].ToSchemaObject(); } this.Facade.ReplaceUsersInRole(scUsers, (AdminUnit)unit.ToSchemaObject(), (AUSchemaRole)role.ToSchemaObject()); }
public void SchemaUserToXml() { SCUser user = SCObjectGenerator.PrepareUserObject(); XElement userElem = new XElement("Root").AddChildElement("Object"); user.ToXElement(userElem); Console.WriteLine(userElem.Parent.ToString()); SCUser userDeserialized = new SCUser(); userDeserialized.FromXElement(userElem); Assert.AreEqual(user.ID, userDeserialized.ID); Assert.AreEqual(user.Name, userDeserialized.Name); Assert.AreEqual(user.FirstName, userDeserialized.FirstName); Assert.AreEqual(user.LastName, userDeserialized.LastName); }
private static SCRelationObject UpdateRelation(SCOrganization org, SCUser user) { SCOrganization root = SCOrganization.GetRoot(); SCRelationObject orgRelation = new SCRelationObject(root, org); SCRelationObject relation = new SCRelationObject(org, user); SCActionContext.Current.DoActions(() => { using (TransactionScope scope = TransactionScopeFactory.Create()) { SchemaObjectAdapter.Instance.Update(org); SchemaRelationObjectAdapter.Instance.Update(orgRelation); SchemaObjectAdapter.Instance.Update(user); SchemaRelationObjectAdapter.Instance.Update(relation); scope.Complete(); } }); return relation; }
public SCRelationObject AddUserToOrganization(SCUser user, SCOrganization parent) { user.NullCheck("user"); parent.NullCheck("parent"); SCOrganizationRelativeExecutor executor = new SCOrganizationRelativeExecutor(SCOperationType.AddUserToOrganization, parent, user) { NeedValidation = this.NeedValidationAndStatusCheck, NeedParentStatusCheck = this.NeedValidationAndStatusCheck }; if (this._NeedCheckPermissions) CheckPermissions(SCOperationType.AddUserToOrganization, parent.Schema, "AddChildren", parent.ID); SCRelationObject result = null; ExecuteWithActions(SCOperationType.AddUserToOrganization, () => SCActionContext.Current.DoActions(() => result = (SCRelationObject)executor.Execute())); return result; }
public virtual void DoAdd(SCUser otherUser, SCUser self) { if (otherUser.ID == self.ID) throw new HttpException("不能指定自身为秘书"); this.executor.AddSecretaryToUser(self, otherUser); }
public override void DoRemove(SCUser otherUser, SCUser self) { base.DoRemove(self, otherUser); }
public void ReplaceUsersInRole(SCUser[] users, AdminUnit unit, AUSchemaRole role) { CheckUnitPermission(AUOperationType.RemoveUserFromRole, "EditRoleMembers", unit); AURoleMemberExecutor executor = new AURoleMemberExecutor(AUOperationType.RemoveUserFromRole, role, unit, users) { NeedStatusCheck = this.NeedValidationAndStatusCheck, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck }; ExecuteWithActions(AUOperationType.RemoveUserFromRole, () => SCActionContext.Current.DoActions(() => executor.Execute())); }
public void RemoveUserFromRole(SCUser user, AdminUnit unit, AUSchemaRole role) { CheckUnitPermission(AUOperationType.RemoveUserFromRole, "EditRoleMembers", unit); SchemaObjectBase r = Adapters.AUSnapshotAdapter.Instance.LoadAURole(role.ID, unit.ID, true, DateTime.MinValue); if (r == null) throw new AUObjectValidationException("没有找到此管理单元的角色,请尝试重新添加此角色"); AUMemberRelativeExecutor executor = new AUMemberRelativeExecutor(AUOperationType.RemoveUserFromRole, r, user) { OverrideExistedRelation = true, SaveTargetData = false, NeedStatusCheck = false, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck, }; executor.Relation.Status = SchemaObjectStatus.Deleted; SCMemberRelation result = null; ExecuteWithActions(AUOperationType.RemoveUserFromRole, () => SCActionContext.Current.DoActions(() => result = (SCMemberRelation)executor.Execute())); }
public void AddUserToRole(ClientGenericObject user, ClientAdminUnit unit, ClientAUSchemaRole role) { user.NullCheck("user"); unit.NullCheck("unit"); role.NullCheck("role"); CheckIDProvided(user); CheckIDProvided(unit); CheckIDProvided(role); if (string.IsNullOrEmpty(user.ID)) throw new ArgumentException("user的ID必须不为null", "user"); SCUser scUser = new SCUser() { ID = user.ID, Name = user.Properties.GetValue("Name", string.Empty), CodeName = user.Properties.GetValue("CodeName", string.Empty) }; this.Facade.AddUserToRole(scUser, (AdminUnit)unit.ToSchemaObject(), (AUSchemaRole)role.ToSchemaObject()); }
/// <summary> /// 解除某人的秘书关系 /// </summary> /// <param name="secretary"></param> /// <param name="user"></param> /// <returns></returns> public SCSecretaryRelation RemoveSecretaryFromUser(SCUser secretary, SCUser user) { SCMemberRelativeExecutor executor = new SCMemberRelativeExecutor(SCOperationType.RemoveSecretaryFromUser, user, secretary) { OverrideExistedRelation = true, NeedStatusCheck = this.NeedValidationAndStatusCheck, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck }; if (this._NeedCheckPermissions) { var hereParents = secretary.CurrentParentRelations; var thereParents = user.CurrentParentRelations; var hereIds = (from p in hereParents where p.Status == SchemaObjectStatus.Normal select p.ParentID).ToArray(); var thereIds = (from p in thereParents where p.Status == SchemaObjectStatus.Normal select p.ParentID).ToArray(); CheckPermissions(SCOperationType.RemoveSecretaryFromUser, SchemaDefine.GetSchema("Organizations"), "UpdateChildren", hereIds); CheckPermissions(SCOperationType.RemoveSecretaryFromUser, SchemaDefine.GetSchema("Organizations"), "UpdateChildren", thereIds); } executor.Relation.Status = SchemaObjectStatus.Deleted; SCSecretaryRelation result = null; ExecuteWithActions(SCOperationType.RemoveSecretaryFromUser, () => SCActionContext.Current.DoActions(() => result = (SCSecretaryRelation)executor.Execute())); return result; }
public virtual void DoRemove(SCUser otherUser, SCUser self) { if (otherUser.ID == self.ID) throw new HttpException("不能指定自身为秘书"); this.executor.RemoveSecretaryFromUser(self, otherUser); }
private void GetUserCallback(SCUser user) { console.text = user.ToString(); }
/// <summary> /// 设置用户的默认组织 /// </summary> /// <param name="user"></param> /// <param name="parent"></param> /// <returns></returns> public SCRelationObject SetUserDefaultOrganization(SCUser user, SCOrganization parent) { SCOrganizationRelativeExecutor executor = new SCOrganizationRelativeExecutor(SCOperationType.SetUserDefaultOrganization, parent, user) { OverrideExistedRelation = true, OverrideDefault = true, NeedStatusCheck = this.NeedValidationAndStatusCheck, NeedParentStatusCheck = this.NeedValidationAndStatusCheck }; SCRelationObject result = executor.Relation; if (executor.RelationExisted) { if (this._NeedCheckPermissions) { var currentDefault = user.CurrentParentRelations.Where(r => r.Default && r.Status == SchemaObjectStatus.Normal).FirstOrDefault(); if (currentDefault != null) { CheckPermissions(SCOperationType.SetUserDefaultOrganization, SchemaDefine.GetSchema("Organizations"), "UpdateChildren", currentDefault.ParentID); } CheckPermissions(SCOperationType.SetUserDefaultOrganization, SchemaDefine.GetSchema("Organizations"), "UpdateChildren", executor.Relation.ParentID); } executor.Relation.Default = true; ExecuteWithActions(SCOperationType.SetUserDefaultOrganization, () => SCActionContext.Current.DoActions(() => result = (SCRelationObject)executor.Execute())); } return result; }
public SchemaObjectBase DeleteUser(SCUser user, SCOrganization parent, bool deletedByContainer) { SchemaObjectStatus targetStatus = deletedByContainer ? SchemaObjectStatus.DeletedByContainer : SchemaObjectStatus.Deleted; SCOperationType op = SCOperationType.None; SCExecutorBase executor = null; if (parent == null) { op = SCOperationType.DeleteUser; if (this._NeedCheckPermissions) CheckPermissions(op, SchemaDefine.GetSchema("Organizations"), "DeleteChildren", user.OwnerID); user.Status = targetStatus; executor = new SCObjectExecutor(op, user) { NeedDeleteRelations = true, NeedValidation = false, NeedDeleteMemberRelations = this.NeedValidationAndStatusCheck, NeedStatusCheck = this.NeedValidationAndStatusCheck }; } else { op = SCOperationType.RemoveUserFromOrganization; if (this._NeedCheckPermissions) CheckPermissions(op, parent.Schema, "DeleteChildren", parent.ID); executor = new SCOrganizationRelativeExecutor(op, parent, user) { OverrideExistedRelation = true, NeedValidation = false, NeedStatusCheck = this.NeedValidationAndStatusCheck, NeedParentStatusCheck = this.NeedValidationAndStatusCheck }; if (((SCOrganizationRelativeExecutor)executor).Relation != null) ((SCOrganizationRelativeExecutor)executor).Relation.Status = targetStatus; } SchemaObjectBase result = null; ExecuteWithActions(op, () => SCActionContext.Current.DoActions(() => result = (SchemaObjectBase)executor.Execute())); return result; }
public SchemaObjectBase UpdateUser(SCUser user) { SCObjectExecutor executor = new SCObjectExecutor(SCOperationType.UpdateUser, user) { NeedValidation = this.NeedValidationAndStatusCheck, NeedStatusCheck = this.NeedValidationAndStatusCheck }; if (this._NeedCheckPermissions) { var defOrgRelation = (user.CurrentParentRelations.Find(m => m.Default)) ?? new SCRelationObject(SCOrganization.GetRoot(), user); CheckPermissions(SCOperationType.UpdateUser, user.Schema, "UpdateChildren", defOrgRelation.ParentID); } SchemaObjectBase result = null; ExecuteWithActions(SCOperationType.UpdateUser, () => SCActionContext.Current.DoActions(() => result = (SchemaObjectBase)executor.Execute())); return result; }
public SchemaObjectBase AddUser(SCUser user, SCOrganization parent) { SCObjectExecutor executor = null; if (parent == null) { if (this._NeedCheckPermissions) CheckSupervisorPermissions(SCOperationType.AddUser); executor = new SCObjectExecutor(SCOperationType.AddUser, user) { NeedValidation = this.NeedValidationAndStatusCheck }; } else { if (this._NeedCheckPermissions) CheckPermissions(SCOperationType.AddUser, parent.Schema, "AddChildren", parent.ID); executor = new SCOrganizationRelativeExecutor(SCOperationType.AddUser, parent, user) { SaveTargetData = true, NeedValidation = this.NeedValidationAndStatusCheck, NeedParentStatusCheck = this.NeedValidationAndStatusCheck }; } SchemaObjectBase result = null; ExecuteWithActions(SCOperationType.AddUser, () => SCActionContext.Current.DoActions(() => result = (SchemaObjectBase)executor.Execute())); return result; }
public override void DoAdd(SCUser otherUser, SCUser self) { base.DoAdd(self, otherUser); }
public SCMemberRelation AddUserToGroup(SCUser user, SCGroup group) { SCMemberRelativeExecutor executor = new SCMemberRelativeExecutor(SCOperationType.AddUserToGroup, group, user) { NeedStatusCheck = this.NeedValidationAndStatusCheck, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck }; if (this._NeedCheckPermissions) CheckOrganizationChildrenPermissions(SCOperationType.AddUserToGroup, "EditMembersOfGroups", group); SCMemberRelation result = null; ExecuteWithActions(SCOperationType.AddUserToGroup, () => SCActionContext.Current.DoActions(() => result = (SCMemberRelation)executor.Execute())); return result; }
public SCMemberRelation RemoveUserFromGroup(SCUser user, SCGroup group) { SCMemberRelativeExecutor executor = new SCMemberRelativeExecutor(SCOperationType.RemoveUserFromGroup, group, user) { OverrideExistedRelation = true, NeedStatusCheck = this.NeedValidationAndStatusCheck, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck }; if (this._NeedCheckPermissions) CheckOrganizationChildrenPermissions(SCOperationType.RemoveUserFromGroup, "EditMembersOfGroups", group); executor.Relation.Status = SchemaObjectStatus.Deleted; SCMemberRelation result = null; ExecuteWithActions(SCOperationType.RemoveUserFromGroup, () => SCActionContext.Current.DoActions(() => result = (SCMemberRelation)executor.Execute())); return result; }
public void RemoveUserFromRole(ClientGenericObject user, ClientAdminUnit unit, ClientAUSchemaRole role) { user.NullCheck("user"); unit.NullCheck("unit"); role.NullCheck("role"); CheckIDProvided(user); CheckIDProvided(unit); CheckIDProvided(role); SCUser scUser = new SCUser() { ID = user.ID, Name = user.Properties.GetValue("Name", string.Empty), CodeName = user.Properties.GetValue("CodeName", string.Empty) }; this.Facade.RemoveUserFromRole(scUser, (AdminUnit)unit.ToSchemaObject(), (AUSchemaRole)role.ToSchemaObject()); }
public void ReplaceUsersInRole(ClientGenericObject[] users, ClientAdminUnit unit, ClientAUSchemaRole role) { users.NullCheck("users"); unit.NullCheck("unit"); role.NullCheck("role"); CheckIDProvided(unit); CheckIDProvided(role); SCUser[] scUsers = new SCUser[users.Length]; for (int i = users.Length - 1; i >= 0; i--) scUsers[i] = (SCUser)users[i].ToSchemaObject(); this.Facade.ReplaceUsersInRole(scUsers, (AdminUnit)unit.ToSchemaObject(), (AUSchemaRole)role.ToSchemaObject()); }