private bool ContainsRoleType(Structure structure, Container container, RoleType roleType)
 {
     return _dbContext.Enrolls.Where(
         (cu) =>
         cu.ContainerId == container.Id &&
         cu.RoleType.Name == roleType.Name &&
         cu.RoleTypeStructureId == structure.Id
                ).Count() != 0;
 }
Esempio n. 2
0
        public Structure Create(string name, string description, bool @public, string administrator)
        {
            var structure = new Structure
                                {
                                    Name = name,
                                    Description = description,
                                    Public = @public,
                                    Developing = true,
                                    CreatedOn = DateTime.Now
                                };

            structure.Administrators.Add(_dbManager.User.Get(administrator));
            _dbManager.DbContext.Structures.Add(structure);
            _dbManager.DbContext.SaveChanges();

            return structure;
        }
        public ActionResult Create(Structure structure)
        {
            try
            {
                structure.Developing = true;
                structure.Public = true;
                structure.Administrators.Add(_context.Users.Find(User.Identity.Name));
                structure.CreatedOn = DateTime.Now;

                _context.Structures.Add(structure);
                _context.SaveChanges();

                return RedirectToAction("Design", new {id = structure.Id});
            }
            catch
            {
                return View();
            }
        }
        public ActionResult Create()
        {
            var structure = new Structure();

            return View(structure);
        }
        private void SetCurrentAndParentRoleTypes(
            IAuthorization authorization,
            Structure structure,
            Container rootContainer,
            string rootName,
            string service,
            IEnumerable<Role> roles
            )
        {
            Container current = rootContainer;

            do
            {
                foreach (var role in roles)
                    if (ContainsRoleType(structure, current, role.RoleType))
                    {
                        var permissions = role.Rule.Permissions.Where(
                            (sp) =>
                            sp.ServiceName == service
                            ).Select(
                                (sp) =>
                                sp.Name
                            );

                        authorization.AddGroupPermission(
                            rootName,
                            authorization.GetGroupName(structure.Id, current.Id, role.RoleTypeName),
                            permissions
                            );
                    }

                current = current.ParentContainer;
            } while (current != null);
        }
        private void SetChildsRoleTypes(
            IAuthorization authorization,
            Structure structure,
            Container rootContainer,
            string rootName,
            string service,
            IEnumerable<Role> roles
            )
        {
            if (rootContainer.Childs == null) return;

            foreach (var child in rootContainer.Childs)
            {
                SetChildsRoleTypes(authorization, structure, child, service, rootName, roles);

                foreach (var role in roles)
                    if (ContainsRoleType(structure, child, role.RoleType))
                    {
                        var permissions = role.Rule.Permissions.Where(
                            (sp) =>
                            sp.ServiceName == service
                            ).Select(
                                (sp) => sp.Name
                            );

                        authorization.AddGroupPermission(
                            rootName,
                            authorization.GetGroupName(structure.Id, child.Id, role.RoleTypeName),
                            permissions
                            );
                    }
            }
        }