Example #1
0
        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));
        }
Example #2
0
        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));
            }
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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()));
        }
Example #6
0
        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);
        }
Example #7
0
        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));
        }
Example #8
0
        /// <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);
        }
Example #10
0
        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);
        }
Example #11
0
        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);
        }
Example #12
0
        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);
                }
            }
        }
Example #13
0
        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;
        }
Example #14
0
        /// <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
            });
        }
Example #16
0
        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);
        }
Example #17
0
        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);
        }
Example #18
0
        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);
        }
Example #19
0
        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);
                }
            }
        }
Example #20
0
        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);
        }
Example #21
0
        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));
        }
Example #22
0
        public void GetSetSchemaUserPropertiesTest()
        {
            SCUser user = SCObjectGenerator.PrepareUserObject();

            Assert.AreEqual("Great Shen Zheng", user.Name);
            Assert.AreEqual("峥", user.FirstName);
            Assert.AreEqual("沈", user.LastName);
        }
Example #23
0
 public virtual void DoAdd(SCUser otherUser, SCUser self)
 {
     if (otherUser.ID == self.ID)
     {
         throw new HttpException("不能指定自身为秘书");
     }
     this.executor.AddSecretaryToUser(self, otherUser);
 }
Example #24
0
 public virtual void DoRemove(SCUser otherUser, SCUser self)
 {
     if (otherUser.ID == self.ID)
     {
         throw new HttpException("不能指定自身为秘书");
     }
     this.executor.RemoveSecretaryFromUser(self, otherUser);
 }
Example #25
0
        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);
        }
Example #26
0
        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);
        }
Example #27
0
        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);
        }
Example #28
0
        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;
		}
Example #30
0
        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);
        }
Example #31
0
        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);
			}
Example #37
0
		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()));
		}
Example #38
0
		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);
			}
Example #42
0
 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());
		}