Exemplo n.º 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string roleId = Request.QueryString["role"];

            this.Page.Response.CacheControl = "no-cache";

            this.calcProgress.Tag = roleId;
            if (Page.IsPostBack == false)
            {
                SCRole role = (SCRole)MCS.Library.SOA.DataObjects.Security.Adapters.SchemaObjectAdapter.Instance.Load(roleId);

                if (role == null || role.Status != SchemaObjectStatus.Normal)
                {
                    throw new ObjectNotFoundException("未查询到指定的角色或角色已不再有效");
                }

                SCApplication app = DbUtil.LoadApplicationForRole(role);

                this.RoleAndAppObject = new RoleAndAppData()
                {
                    AppID = app.ID, AppCodeName = app.CodeName, AppName = app.Name, RoleCodeName = role.CodeName, RoleID = role.ID, RoleName = role.Name, RoleDisplayName = role.DisplayName
                };

                this.DeluxeSearch.UserCustomSearchConditions = DbUtil.LoadSearchCondition(ThisPageSearchResourceKey, "Default");
                this.CurrentAdvancedSearchCondition          = new PageAdvancedSearchCondition();

                this.gridMain.PageSize     = this.grid2.PageSize = ProfileUtil.PageSize;
                this.views.ActiveViewIndex = ProfileUtil.GeneralViewModeIndex;
            }

            this.binding1.Data      = this.RoleAndAppObject;
            this.searchBinding.Data = this.CurrentAdvancedSearchCondition;
        }
Exemplo n.º 2
0
        public void JoinRoleAndPermissionTest()
        {
            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);

            role.ClearRelativeData();
            Assert.IsTrue(role.CurrentPermissions.ContainsKey(permission.ID));
            Assert.IsTrue(permission.CurrentRoles.ContainsKey(role.ID));

            SCObjectOperations.Instance.DisjoinRoleAndPermission(role, permission);

            role.ClearRelativeData();
            permission.ClearRelativeData();

            Assert.IsFalse(role.CurrentPermissions.ContainsKey(permission.ID));
            Assert.IsFalse(permission.CurrentRoles.ContainsKey(role.ID));
        }
Exemplo n.º 3
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));
        }
Exemplo n.º 4
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);
        }
Exemplo n.º 5
0
        public void DeletePermissionTest()
        {
            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);

            SCObjectOperations.Instance.DeletePermission(permission);

            application.ClearRelativeData();
            role.ClearRelativeData();

            Console.WriteLine("Role permission count {0}, applicaiton permission count {1}",
                              role.CurrentPermissions.Count, application.CurrentPermissions.Count);

            Assert.AreEqual(0, role.CurrentPermissions.Count);
            Assert.AreEqual(0, application.CurrentPermissions.Count);
        }
Exemplo n.º 6
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);
        }
Exemplo n.º 7
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));
        }
Exemplo n.º 8
0
        public static SCRole PrepareRoleObject()
        {
            SCRole role = new SCRole();

            role.ID       = UuidHelper.NewUuidString();
            role.Name     = "Great Role";
            role.CodeName = role.ID;

            return(role);
        }
Exemplo n.º 9
0
        /// <summary>
        /// 得到角色中权限的变化列表
        /// </summary>
        /// <param name="app"></param>
        /// <param name="role"></param>
        /// <returns></returns>
        private static SCRoleAndDeltaGroup GetDeltaGroupsInRole(this SCRole role, IEnumerable <SCGroup> groupsInOrgs)
        {
            List <SCGroup> existedGroups = new List <SCGroup>();

            role.CurrentMembers.ForEach(m => (m is SCGroup).TrueAction(() => existedGroups.Add((SCGroup)m)));

            DeltaSchemaObjectCollection delta = GetDeltaObjects(existedGroups, groupsInOrgs);

            return(new SCRoleAndDeltaGroup(role, delta));
        }
Exemplo n.º 10
0
        internal static SCApplication LoadApplicationForRole(SCRole role)
        {
            var appRelation = PC.Adapters.SCMemberRelationAdapter.Instance.LoadByMemberID(role.ID, "Applications").Find(m => m.Status == SchemaObjectStatus.Normal);

            if (appRelation == null)
            {
                throw new ObjectNotFoundException("未找到角色对应的应用");
            }

            return((SCApplication)appRelation.Container);
        }
Exemplo n.º 11
0
        public void AddRoleTest()
        {
            Trace.CorrelationManager.ActivityId = UuidHelper.NewUuid();

            SCApplication application = SCObjectGenerator.PrepareApplicationObject();

            SCObjectOperations.Instance.AddApplication(application);

            SCRole role = SCObjectGenerator.PrepareRoleObject();

            SCObjectOperations.Instance.AddRole(role, application);

            application.CurrentRoles.ContainsKey(role.ID);
        }
		public SCJoinRoleAndPermissionExecutor(SCOperationType opType, SCRole role, SCPermission permission)
			: base(opType)
		{
			role.NullCheck("role");
			permission.NullCheck("permission");

			role.ClearRelativeData();
			permission.ClearRelativeData();

			this._Relation = PrepareRelationObject(role, permission);

			this._Role = role;
			this._Permission = permission;
		}
Exemplo n.º 13
0
        public SCJoinRoleAndPermissionExecutor(SCOperationType opType, SCRole role, SCPermission permission)
            : base(opType)
        {
            role.NullCheck("role");
            permission.NullCheck("permission");

            role.ClearRelativeData();
            permission.ClearRelativeData();

            this._Relation = PrepareRelationObject(role, permission);

            this._Role       = role;
            this._Permission = permission;
        }
Exemplo n.º 14
0
        public void TestSerializeRole()
        {
            System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            SCRole obj1 = SCObjectGenerator.PrepareRoleObject();

            obj1.CreateDate     = DateTime.Now;
            obj1.VersionEndTime = new DateTime(567890);
            obj1.VersionEndTime = DateTime.MaxValue;
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            bf.Serialize(ms, obj1);
            ms.Seek(0, System.IO.SeekOrigin.Begin);
            SCRole obj2 = (SCRole)bf.Deserialize(ms);

            CommonAssert(obj1, obj2);
        }
Exemplo n.º 15
0
        public SchemaObjectBase AddRole(SCRole role, SCApplication application)
        {
            SCMemberRelativeExecutor executor = new SCMemberRelativeExecutor(SCOperationType.AddRole, application, role)
            {
                NeedValidation = this.NeedValidationAndStatusCheck, SaveTargetData = true, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck
            };

            if (this._NeedCheckPermissions)
            {
                CheckPermissions(SCOperationType.AddRole, application.Schema, "AddRoles", application.ID);
            }

            SCMemberRelation result = null;

            ExecuteWithActions(SCOperationType.AddRole, () => SCActionContext.Current.DoActions(() => result = (SCMemberRelation)executor.Execute()));

            return(result);
        }
Exemplo n.º 16
0
        /// <summary>
        /// 得到角色中权限的变化列表
        /// </summary>
        /// <param name="app"></param>
        /// <param name="role"></param>
        /// <returns></returns>
        public static SCRoleAndDeltaPermission GetDeltaPermissionsInRole(this SCApplication app, SCRole role)
        {
            SCRole existedRole = app.CurrentRoles.Find(existed => AreEqual(existed, role));

            DeltaSchemaObjectCollection delta = null;

            if (existedRole != null)
            {
                delta = GetDeltaObjects(existedRole.CurrentPermissions, role.CurrentPermissions);
            }
            else
            {
                delta       = new DeltaSchemaObjectCollection();
                existedRole = role;
            }

            return(new SCRoleAndDeltaPermission(existedRole, delta));
        }
Exemplo n.º 17
0
        public SchemaObjectBase UpdateRole(SCRole role)
        {
            SCObjectExecutor executor = new SCObjectExecutor(SCOperationType.UpdateRole, role)
            {
                NeedValidation = this.NeedValidationAndStatusCheck, NeedStatusCheck = this.NeedValidationAndStatusCheck
            };

            if (this._NeedCheckPermissions)
            {
                CheckApplicationMemberPermissions(SCOperationType.UpdateRole, "UpdateRoles", role);
            }

            SchemaObjectBase result = null;

            ExecuteWithActions(SCOperationType.UpdateRole, () => SCActionContext.Current.DoActions(() => result = (SchemaObjectBase)executor.Execute()));

            return(result);
        }
Exemplo n.º 18
0
        public static SCRoleCollection GetRoles(this DataTable table)
        {
            SCRoleCollection roles = new SCRoleCollection();

            if (table != null && table.Columns.Count > StartColumn)
            {
                for (int i = StartColumn; i < table.Columns.Count; i++)
                {
                    string roleName = table.Columns[i].ColumnName;

                    SCRole role = new SCRole();

                    roles.Add(InitProperties(role, roleName));
                }
            }

            return(roles);
        }
Exemplo n.º 19
0
        public SCMemberRelation AddMemberToRole(SCBase member, SCRole role)
        {
            SCMemberRelativeExecutor executor = new SCMemberRelativeExecutor(SCOperationType.AddMemberToRole, role, member)
            {
                NeedStatusCheck = this.NeedValidationAndStatusCheck, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck
            };

            if (this._NeedCheckPermissions)
            {
                CheckApplicationMemberPermissions(SCOperationType.AddMemberToRole, "ModifyMembersInRoles", role);
            }

            SCMemberRelation result = null;

            ExecuteWithActions(SCOperationType.AddMemberToRole, () => SCActionContext.Current.DoActions(() => result = (SCMemberRelation)executor.Execute()));

            return(result);
        }
Exemplo n.º 20
0
        public SCRelationObject JoinRoleAndPermission(SCRole role, SCPermission permission)
        {
            SCJoinRoleAndPermissionExecutor executor =
                new SCJoinRoleAndPermissionExecutor(SCOperationType.JoinRoleAndPermission, role, permission)
            {
                NeedStatusCheck = this.NeedValidationAndStatusCheck
            };

            if (this._NeedCheckPermissions)
            {
                CheckApplicationMemberPermissions(SCOperationType.JoinRoleAndPermission, "EditRelationOfRolesAndPermissions", permission);
            }

            SCRelationObject result = null;

            ExecuteWithActions(SCOperationType.JoinRoleAndPermission, () => SCActionContext.Current.DoActions(() => result = (SCRelationObject)executor.Execute()));

            return(result);
        }
Exemplo n.º 21
0
        protected void btnGenInitData_Click(object sender, EventArgs e)
        {
            SCApplication app = new SCApplication();

            app.ID          = "68DB2697-59B2-414B-8591-58CE06C4B44F";
            app.Name        = "权限中心";
            app.CodeName    = "OGU_ADMIN";
            app.DisplayName = "权限中心";

            PC.Executors.SCObjectOperations.Instance.AddApplication(app);

            SCRole role = new SCRole();

            role.ID          = "6BEA73AB-0924-483B-BEE0-55C0847CFDAB";
            role.DisplayName = role.Name = "权限中心总管";
            role.CodeName    = "SYSTEM_ADMINISTRATOR";

            PC.Executors.SCObjectOperations.Instance.AddRole(role, app);
        }
Exemplo n.º 22
0
        private static void PrepareTestApplicationData()
        {
            SCApplication app1 = PrepareSCObject <SCApplication>("应用1", "应用1");

            SCObjectOperations.Instance.AddApplication(app1);

            SCRole role11 = PrepareSCObject <SCRole>("应用1角色1", "应用1角色1");

            SCObjectOperations.Instance.AddRole(role11, app1);

            SCRole role12 = PrepareSCObject <SCRole>("应用1角色2", "应用1角色2");

            SCObjectOperations.Instance.AddRole(role12, app1);

            SCPermission permission11 = PrepareSCObject <SCPermission>("应用1权限1", "应用1权限1");

            SCObjectOperations.Instance.AddPermission(permission11, app1);

            SCPermission permission12 = PrepareSCObject <SCPermission>("应用1权限2", "应用1权限2");

            SCObjectOperations.Instance.AddPermission(permission12, app1);

            SCApplication app2 = PrepareSCObject <SCApplication>("应用2", "应用2");

            SCObjectOperations.Instance.AddApplication(app2);

            SCRole role21 = PrepareSCObject <SCRole>("应用2角色1", "应用2角色1");

            SCObjectOperations.Instance.AddRole(role21, app2);

            SCRole role22 = PrepareSCObject <SCRole>("应用2角色2", "应用2角色2");

            SCObjectOperations.Instance.AddRole(role22, app2);

            SCPermission permission21 = PrepareSCObject <SCPermission>("应用2权限1", "应用2权限1");

            SCObjectOperations.Instance.AddPermission(permission21, app2);

            SCPermission permission22 = PrepareSCObject <SCPermission>("应用2权限2", "应用2权限2");

            SCObjectOperations.Instance.AddPermission(permission22, app2);
        }
Exemplo n.º 23
0
        public SCMemberRelation RemoveMemberFromRole(SCBase member, SCRole role)
        {
            SCMemberRelativeExecutor executor = new SCMemberRelativeExecutor(SCOperationType.RemoveMemberFromRole, role, member)
            {
                OverrideExistedRelation = true, NeedStatusCheck = this.NeedValidationAndStatusCheck, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck
            };

            if (this._NeedCheckPermissions)
            {
                CheckApplicationMemberPermissions(SCOperationType.RemoveMemberFromRole, "ModifyMembersInRoles", role);
            }

            executor.Relation.Status = SchemaObjectStatus.Deleted;

            SCMemberRelation result = null;

            ExecuteWithActions(SCOperationType.RemoveMemberFromRole, () => SCActionContext.Current.DoActions(() => result = (SCMemberRelation)executor.Execute()));

            return(result);
        }
Exemplo n.º 24
0
        public SchemaObjectBase DeleteRole(SCRole role)
        {
            SCObjectExecutor executor = new SCObjectExecutor(SCOperationType.DeleteRole, role)
            {
                NeedValidation = false, NeedDeleteMemberRelations = true, NeedDeleteRelations = true, NeedDeleteConditions = true, NeedStatusCheck = this.NeedValidationAndStatusCheck
            };

            if (this._NeedCheckPermissions)
            {
                CheckApplicationMemberPermissions(SCOperationType.DeleteRole, "DeleteRoles", role);
            }

            role.Status = SchemaObjectStatus.Deleted;

            SchemaObjectBase result = null;

            ExecuteWithActions(SCOperationType.DeleteRole, () => SCActionContext.Current.DoActions(() => result = (SchemaObjectBase)executor.Execute()));

            return(result);
        }
Exemplo n.º 25
0
        public static SCRolesAndPermissions GetRolesAndPermissions(this DataTable table, SCPermissionCollection existedPermissions)
        {
            table.NullCheck("table");

            SCRoleCollection       roles       = new SCRoleCollection();
            SCPermissionCollection permissions = table.GetPermissions(existedPermissions);

            if (table.Columns.Contains("权限点/数据权限") && table.Columns.Count > StartColumn)
            {
                for (int i = StartColumn; i < table.Columns.Count; i++)
                {
                    string roleName = table.Columns[i].ColumnName;

                    SCRole role = roles.Append(InitProperties(new SCRole(), roleName));

                    foreach (DataRow row in table.Rows)
                    {
                        string permissionName = row["权限点/数据权限"].ToString();

                        if (permissionName.IsNotEmpty())
                        {
                            SCPermission permission = permissions.Find(p => string.Compare(permissionName, p.CodeName, true) == 0);

                            if (permission != null)
                            {
                                string cellValue = row[roleName].ToString();

                                if (cellValue.IsNullOrEmpty() || cellValue.Trim().IsNullOrEmpty() || cellValue.Trim().ToUpper() == "N")
                                {
                                    continue;
                                }

                                role.CurrentPermissions.Append(permission);
                            }
                        }
                    }
                }
            }

            return(new SCRolesAndPermissions(roles, permissions));
        }
Exemplo n.º 26
0
        public SCRelationObject DisjoinRoleAndPermission(SCRole role, SCPermission permission)
        {
            SCJoinRoleAndPermissionExecutor executor =
                new SCJoinRoleAndPermissionExecutor(SCOperationType.DisjoinRoleAndPermission, role, permission)
            {
                OverrideExistedRelation = true, NeedStatusCheck = this.NeedValidationAndStatusCheck
            };

            if (this._NeedCheckPermissions)
            {
                CheckApplicationMemberPermissions(SCOperationType.DisjoinRoleAndPermission, "EditRelationOfRolesAndPermissions", permission);
            }

            executor.Relation.Status = SchemaObjectStatus.Deleted;

            SCRelationObject result = null;

            ExecuteWithActions(SCOperationType.DisjoinRoleAndPermission, () => SCActionContext.Current.DoActions(() => result = (SCRelationObject)executor.Execute()));

            return(result);
        }
Exemplo n.º 27
0
        public void DeleteRoleTest()
        {
            SCApplication application = SCObjectGenerator.PrepareApplicationObject();

            SCObjectOperations.Instance.AddApplication(application);

            SCRole role = SCObjectGenerator.PrepareRoleObject();

            SCObjectOperations.Instance.AddRole(role, application);

            Console.WriteLine("RoleID: {0}", role.ID);

            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);

            SCObjectAndRelationCollection relations = SCSnapshotAdapter.Instance.QueryRolesContainsMembers(new string[] { "Roles" }, new string[] { role.ID }, false, DateTime.MinValue);

            Assert.AreEqual(role.CurrentMembers.Count, relations.Count);

            SCObjectOperations.Instance.DeleteRole(role);

            Assert.AreEqual(0, application.CurrentRoles.Count);

            Assert.AreEqual(0, user1.CurrentRoles.Count);
            Assert.AreEqual(0, user2.CurrentRoles.Count);

            SCObjectAndRelationCollection relationDeleted = SCSnapshotAdapter.Instance.QueryRolesContainsMembers(new string[] { "Roles" }, new string[] { role.ID }, false, DateTime.MinValue);

            Assert.AreEqual(role.CurrentMembers.Count, relationDeleted.Count);

            SameContainerUserAndContainerSnapshotCollection containsUsers = UserAndContainerSnapshotAdapter.Instance.LoadByContainerID(role.ID);

            containsUsers.ForEach(u => Assert.AreEqual(SchemaObjectStatus.Deleted, u.Status));
        }
Exemplo n.º 28
0
        public void UpdateRoleRoleConditionTest()
        {
            SCApplication application = SCObjectGenerator.PrepareApplicationObject();

            SCObjectOperations.Instance.AddApplication(application);

            SCRole role = SCObjectGenerator.PrepareRoleObject();

            SCObjectOperations.Instance.AddRole(role, application);

            SCConditionOwner owner = new SCConditionOwner()
            {
                OwnerID = role.ID
            };

            owner.Conditions.Add(new SCCondition()
            {
                OwnerID = role.ID, SortID = 0, Condition = "Users.Status == 1"
            });
            owner.Conditions.Add(new SCCondition()
            {
                OwnerID = role.ID, SortID = 1, Condition = "Users.Status == 3"
            });

            SCObjectOperations.Instance.UpdateRoleConditions(owner);

            SCConditionOwner ownerLoaded = SCConditionAdapter.Instance.Load(role.ID);

            Assert.AreEqual(owner.OwnerID, ownerLoaded.OwnerID);
            Assert.AreEqual("Default", ownerLoaded.Type);

            Assert.AreEqual(owner.Conditions.Count, ownerLoaded.Conditions.Count);

            for (int i = 0; i < owner.Conditions.Count; i++)
            {
                Assert.AreEqual(owner.Conditions[i].OwnerID, ownerLoaded.Conditions[i].OwnerID);
                Assert.AreEqual(owner.Conditions[i].Condition, ownerLoaded.Conditions[i].Condition);
            }
        }
Exemplo n.º 29
0
        public static void ImportRoles(this DataTable table, SCApplication app)
        {
            app.NullCheck("app");

            if (table != null && table.Columns.Count > 2 && table.Rows.Count > 0)
            {
                for (int i = 2; i < table.Columns.Count; i++)
                {
                    string roleName = table.Columns[i].ColumnName;

                    if (SchemaObjectAdapter.Instance.LoadByCodeName("Roles", roleName, SchemaObjectStatus.Normal, DateTime.MinValue) == null)
                    {
                        SCRole role = new SCRole();
                        role.ID          = UuidHelper.NewUuidString();
                        role.DisplayName = role.Name = roleName;
                        role.CodeName    = roleName;

                        SCObjectOperations.Instance.AddRole(role, app);
                    }
                }
            }
        }
Exemplo n.º 30
0
        private SCRelationObject PrepareRelationObject(SCRole role, SCPermission permission)
        {
            SCRelationObject relation = SchemaRelationObjectAdapter.Instance.Load(role.ID, permission.ID);

            if (relation == null)
            {
                relation = new SCRelationObject(role, permission);
            }
            else
            {
                if (relation.Status == SchemaObjectStatus.Normal)
                {
                    this._RelationExisted = true;
                }
                else
                {
                    relation.Status = SchemaObjectStatus.Normal;
                }
            }

            return(relation);
        }
Exemplo n.º 31
0
		public SchemaObjectBase DeleteRole(SCRole role)
		{
			SCObjectExecutor executor = new SCObjectExecutor(SCOperationType.DeleteRole, role) { NeedValidation = false, NeedDeleteMemberRelations = true, NeedDeleteRelations = true, NeedDeleteConditions = true, NeedStatusCheck = this.NeedValidationAndStatusCheck };

			if (this._NeedCheckPermissions)
				CheckApplicationMemberPermissions(SCOperationType.DeleteRole, "DeleteRoles", role);

			role.Status = SchemaObjectStatus.Deleted;

			SchemaObjectBase result = null;

			ExecuteWithActions(SCOperationType.DeleteRole, () => SCActionContext.Current.DoActions(() => result = (SchemaObjectBase)executor.Execute()));

			return result;
		}
		private SCRelationObject PrepareRelationObject(SCRole role, SCPermission permission)
		{
			SCRelationObject relation = SchemaRelationObjectAdapter.Instance.Load(role.ID, permission.ID);

			if (relation == null)
				relation = new SCRelationObject(role, permission);
			else
			{
				if (relation.Status == SchemaObjectStatus.Normal)
					this._RelationExisted = true;
				else
					relation.Status = SchemaObjectStatus.Normal;
			}

			return relation;
		}
Exemplo n.º 33
0
		public SCRelationObject DisjoinRoleAndPermission(SCRole role, SCPermission permission)
		{
			SCJoinRoleAndPermissionExecutor executor =
				new SCJoinRoleAndPermissionExecutor(SCOperationType.DisjoinRoleAndPermission, role, permission) { OverrideExistedRelation = true, NeedStatusCheck = this.NeedValidationAndStatusCheck };

			if (this._NeedCheckPermissions)
				CheckApplicationMemberPermissions(SCOperationType.DisjoinRoleAndPermission, "EditRelationOfRolesAndPermissions", permission);

			executor.Relation.Status = SchemaObjectStatus.Deleted;

			SCRelationObject result = null;

			ExecuteWithActions(SCOperationType.DisjoinRoleAndPermission, () => SCActionContext.Current.DoActions(() => result = (SCRelationObject)executor.Execute()));

			return result;
		}
Exemplo n.º 34
0
		public SCRelationObject JoinRoleAndPermission(SCRole role, SCPermission permission)
		{
			SCJoinRoleAndPermissionExecutor executor =
				new SCJoinRoleAndPermissionExecutor(SCOperationType.JoinRoleAndPermission, role, permission) { NeedStatusCheck = this.NeedValidationAndStatusCheck };

			if (this._NeedCheckPermissions)
				CheckApplicationMemberPermissions(SCOperationType.JoinRoleAndPermission, "EditRelationOfRolesAndPermissions", permission);

			SCRelationObject result = null;

			ExecuteWithActions(SCOperationType.JoinRoleAndPermission, () => SCActionContext.Current.DoActions(() => result = (SCRelationObject)executor.Execute()));

			return result;
		}
Exemplo n.º 35
0
		public SCMemberRelation RemoveMemberFromRole(SCBase member, SCRole role)
		{
			SCMemberRelativeExecutor executor = new SCMemberRelativeExecutor(SCOperationType.RemoveMemberFromRole, role, member) { OverrideExistedRelation = true, NeedStatusCheck = this.NeedValidationAndStatusCheck, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck };

			if (this._NeedCheckPermissions)
				CheckApplicationMemberPermissions(SCOperationType.RemoveMemberFromRole, "ModifyMembersInRoles", role);

			executor.Relation.Status = SchemaObjectStatus.Deleted;

			SCMemberRelation result = null;

			ExecuteWithActions(SCOperationType.RemoveMemberFromRole, () => SCActionContext.Current.DoActions(() => result = (SCMemberRelation)executor.Execute()));

			return result;
		}
Exemplo n.º 36
0
		public SCMemberRelation AddMemberToRole(SCBase member, SCRole role)
		{
			SCMemberRelativeExecutor executor = new SCMemberRelativeExecutor(SCOperationType.AddMemberToRole, role, member) { NeedStatusCheck = this.NeedValidationAndStatusCheck, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck };

			if (this._NeedCheckPermissions)
				CheckApplicationMemberPermissions(SCOperationType.AddMemberToRole, "ModifyMembersInRoles", role);

			SCMemberRelation result = null;

			ExecuteWithActions(SCOperationType.AddMemberToRole, () => SCActionContext.Current.DoActions(() => result = (SCMemberRelation)executor.Execute()));

			return result;
		}
Exemplo n.º 37
0
		protected void btnGenInitData_Click(object sender, EventArgs e)
		{
			SCApplication app = new SCApplication();
			app.ID = "68DB2697-59B2-414B-8591-58CE06C4B44F";
			app.Name = "权限中心";
			app.CodeName = "OGU_ADMIN";
			app.DisplayName = "权限中心";

			PC.Executors.SCObjectOperations.Instance.AddApplication(app);

			SCRole role = new SCRole();
			role.ID = "6BEA73AB-0924-483B-BEE0-55C0847CFDAB";
			role.DisplayName = role.Name = "权限中心总管";
			role.CodeName = "SYSTEM_ADMINISTRATOR";

			PC.Executors.SCObjectOperations.Instance.AddRole(role, app);
		}
Exemplo n.º 38
0
		public SchemaObjectBase UpdateRole(SCRole role)
		{
			SCObjectExecutor executor = new SCObjectExecutor(SCOperationType.UpdateRole, role) { NeedValidation = this.NeedValidationAndStatusCheck, NeedStatusCheck = this.NeedValidationAndStatusCheck };

			if (this._NeedCheckPermissions)
				CheckApplicationMemberPermissions(SCOperationType.UpdateRole, "UpdateRoles", role);

			SchemaObjectBase result = null;

			ExecuteWithActions(SCOperationType.UpdateRole, () => SCActionContext.Current.DoActions(() => result = (SchemaObjectBase)executor.Execute()));

			return result;
		}
Exemplo n.º 39
0
		public SchemaObjectBase AddRole(SCRole role, SCApplication application)
		{
			SCMemberRelativeExecutor executor = new SCMemberRelativeExecutor(SCOperationType.AddRole, application, role) { NeedValidation = this.NeedValidationAndStatusCheck, SaveTargetData = true, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck };

			if (this._NeedCheckPermissions)
				CheckPermissions(SCOperationType.AddRole, application.Schema, "AddRoles", application.ID);

			SCMemberRelation result = null;

			ExecuteWithActions(SCOperationType.AddRole, () => SCActionContext.Current.DoActions(() => result = (SCMemberRelation)executor.Execute()));

			return result;
		}
Exemplo n.º 40
0
        public List <AdditionOperation> GetAditionOperations(string id)
        {
            List <AdditionOperation> list = new List <AdditionOperation>();

            if (string.IsNullOrEmpty(id) == false)
            {
                var obj = SchemaObjectAdapter.Instance.Load(id);
                if (obj.Status == SchemaObjectStatus.Normal)
                {
                    if (obj is SCUser)
                    {
                        var relation = obj.CurrentParentRelations.Find(m => m.Status == SchemaObjectStatus.Normal && m.Default && Util.IsOrganization(m.ParentSchemaType));
                        if (relation != null)
                        {
                            list.Add(new AdditionOperation("转到缺省组织", false, GetClientUrl("~/lists/OUExplorer.aspx?ou=" + relation.ParentID), "_blank"));
                        }
                        string ownerId = ((SCUser)obj).OwnerID;
                        if (string.IsNullOrEmpty(ownerId) == false)
                        {
                            list.Add(new AdditionOperation("转到所有者", false, GetClientUrl("~/lists/OUExplorer.aspx?ou=" + ownerId), "_blank"));
                        }
                    }
                    else if (obj is SCGroup)
                    {
                        SCGroup grp      = (SCGroup)obj;
                        var     parents  = grp.CurrentParentRelations;
                        var     relation = parents.Find(m => m.Status == SchemaObjectStatus.Normal && Util.IsOrganization(m.ParentSchemaType));
                        if (relation != null)
                        {
                            list.Add(new AdditionOperation("转到组织", false, GetClientUrl("~/lists/OUExplorer.aspx?ou=" + relation.ParentID), "_blank"));
                        }
                    }
                    else if (obj is SCRole)
                    {
                        SCRole role = (SCRole)obj;
                        list.Add(new AdditionOperation("打开应用", false, GetClientUrl("~/lists/AllApps.aspx?id=" + role.CurrentApplication.ID), "_blank"));
                        list.Add(new AdditionOperation("定位", true, GetClientUrl("~/lists/AppRoles.aspx?app=" + role.CurrentApplication.ID) + "&id=" + role.ID, "_blank"));
                        //if (this.GetEditRoleMembersEnabled(role.CurrentApplication.ID))
                        //{
                        //    list.Add(new AdditionOperation("角色矩阵", true, GetClientUrl("/MCSWebApp/WorkflowDesigner/MatrixModalDialog/RolePropertyExtension.aspx?AppID=" + role.CurrentApplication.ID + "&roleID=" + role.ID)));
                        //}

                        list.Add(new AdditionOperation("角色功能定义", true, GetClientUrl("~/dialogs/RoleDefinition.aspx?role=" + role.ID)));
                    }
                    else if (obj is SCPermission)
                    {
                        SCPermission permission = (SCPermission)obj;
                        list.Add(new AdditionOperation("打开应用", false, GetClientUrl("~/lists/AllApps.aspx?id=" + permission.CurrentApplication.ID), "_blank"));
                        list.Add(new AdditionOperation("定位", true, GetClientUrl("~/lists/AppFunctions.aspx?app=" + permission.CurrentApplication.ID) + "&id=" + permission.ID, "_blank"));
                    }
                    else if (obj is SCOrganization)
                    {
                        var relation = obj.CurrentParentRelations.Find(m => m.Status == SchemaObjectStatus.Normal && Util.IsOrganization(m.ParentSchemaType));
                        if (relation != null)
                        {
                            list.Add(new AdditionOperation("转到上级组织", false, GetClientUrl("~/lists/OUExplorer.aspx?ou=" + relation.ParentID), "_blank"));
                        }
                    }
                    else if (obj is SCApplication)
                    {
                        list.Add(new AdditionOperation("定位", false, GetClientUrl("~/lists/AllApps.aspx?id=" + obj.ID), "_blank"));
                    }
                }
            }

            return(list);
        }