コード例 #1
0
        public void CreateServiceAuthorizationStruct(IAuthorization authorization, string serviceName)
        {
            if (authorization == null) throw new ArgumentNullException("authorization");

            foreach (Structure structure in _dbContext.Structures)
            {
                var structureContext = structure;
                var containers =
                    _dbContext.Containers.Where((c) => c.ContainerPrototype.StructureId == structureContext.Id);

                foreach (Container container in containers)
                {
                    CreateGroups(authorization, structure.Id, container.Id);

                    foreach (WorkSpaceType workSpaceType in container.ContainerPrototype.WorkSpaceTypes)
                    {
                        var containerContext = container;
                        var workSpaceTypeContext = workSpaceType;

                        var rootName = authorization.GetContainerName(structure.Id, container.Id, workSpaceType.Name);

                        authorization.CreateContainer(rootName);

                        var roles = _dbContext.Roles.Where(
                            (r) =>
                            r.ContainerPrototypeStructureId == structureContext.Id &&
                            r.WorkSpaceTypeStructureId == structureContext.Id &&
                            r.WorkSpaceTypeName == workSpaceTypeContext.Name &&
                            r.ContainerPrototypeName == containerContext.ContainerPrototype.Name
                            );

                        SetCurrentAndParentRoleTypes(authorization, structure, container, rootName, serviceName, roles);

                        SetChildsRoleTypes(authorization, structure, container, rootName, serviceName, roles);
                    }
                }
            }

            authorization.Dispose();
        }