예제 #1
0
        private void ImportRoleConditions(SCObjectSet objectSet, IImportContext context, PC.Executors.ISCObjectOperations executor, Dictionary <object, object> mappings, PC.SCRole[] roles)
        {
            if (roles.Length > 0 && objectSet.HasConditions)
            {
                foreach (var r in roles)
                {
                    PC.SCRole role2 = r;
                    if (mappings.ContainsKey(r))
                    {
                        role2 = (PC.SCRole)mappings[r];
                    }

                    var roleConditions = (from c in objectSet.Conditions where c.OwnerID == r.ID select c).ToArray();

                    if (roleConditions.Length > 0)
                    {
                        context.AppendLogFormat("正在替角色{0}添加条件\r\n", role2.ToDescription());
                        PC.Conditions.SCConditionOwner owner = new PC.Conditions.SCConditionOwner()
                        {
                            OwnerID = role2.ID,
                            Type    = "Default"
                        };

                        foreach (var c in roleConditions)
                        {
                            owner.Conditions.Add(c);
                        }

                        PC.Adapters.SCConditionAdapter.Instance.UpdateConditions(owner);
                    }
                }
            }
        }
예제 #2
0
        private void ImportRolePermissions(SCObjectSet objectSet, IImportContext context, PC.Executors.ISCObjectOperations executor, Dictionary <object, object> mappings, PC.SCPermission[] permissions, PC.SCRole[] roles, bool copyMode)
        {
            if (roles.Length > 0 && permissions.Length > 0 && objectSet.HasRelations)
            {
                foreach (var r in roles)
                {
                    PC.SCRole role2 = r;
                    if (mappings.ContainsKey(r))
                    {
                        role2 = (PC.SCRole)mappings[r];
                    }

                    context.AppendLogFormat("正在替 {0} 查找功能定义\r\n", role2.ToDescription());

                    foreach (var p in permissions)
                    {
                        PC.SCPermission permission2 = p;
                        if (mappings.ContainsKey(p))
                        {
                            permission2 = (PC.SCPermission)mappings[p];
                        }

                        var actual = PC.Adapters.SchemaRelationObjectAdapter.Instance.Load(role2.ID, permission2.ID);
                        var actualHasPermission = actual != null && actual.Status == SchemaObjectStatus.Normal;

                        var refHasPermission = (from rr in objectSet.Relations where rr.Status == SchemaObjectStatus.Normal && rr.ParentID == r.ID && rr.ID == p.ID && rr.ChildSchemaType == "Permissions" && rr.ParentSchemaType == "Roles" select rr).FirstOrDefault() != null;

                        if (refHasPermission == false && actualHasPermission)
                        {
                            context.AppendLogFormat("正在替角色 {0} 解除功能 {1}\r\n", role2.ToDescription(), permission2.ToDescription());
                            executor.DisjoinRoleAndPermission(role2, permission2);
                        }
                        else if (refHasPermission && actualHasPermission == false)
                        {
                            context.AppendLogFormat("正在替角色 {0} 指定功能 {1}\r\n", role2.ToDescription(), permission2.ToDescription());
                            executor.JoinRoleAndPermission(role2, permission2);
                        }
                    }
                }
            }
        }
예제 #3
0
        private void ImportRoleDefinitions(SCObjectSet objectSet, IImportContext context, PC.Executors.ISCObjectOperations exec, int count, int allCount, PC.SCRole role, PC.SCRole role2)
        {
            context.SetStatus(count, allCount, "正在查找并添加角色功能定义");
            context.AppendLogFormat("正在替 {0} 查找角色功能定义\r\n", role2.ToDescription());
            var permissionIds = (from p in objectSet.Relations where p.ParentID == role.ID && p.ChildSchemaType == "Permissions" select p.ID).ToArray();

            var permissions = permissionIds.Length > 0 ? DbUtil.LoadObjects(permissionIds) : null;

            if (permissions != null)
            {
                foreach (PC.SCPermission p in permissions)
                {
                    var relation = PC.Adapters.SchemaRelationObjectAdapter.Instance.Load(role.ID, p.ID);
                    if (relation == null || relation.Status != SchemaObjectStatus.Normal)
                    {
                        string text = string.Format("正在替角色 {0} 指定功能 {1}\r\n", role.DisplayName ?? role.Name, p.DisplayName ?? p.Name);
                        context.SetStatus(count, allCount, text);
                        context.AppendLog(text);
                        exec.JoinRoleAndPermission(role, (PC.SCPermission)p);
                    }
                }
            }
        }