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;
 }
예제 #2
0
        public RoleType Create(long structureId, string name)
        {
            var rt = new RoleType {StructureId = structureId, Name = name};

            _dbManager.DbContext.RoleTypes.Add(rt);
            _dbManager.DbContext.SaveChanges();

            return rt;
        }
예제 #3
0
        private bool PermissionToEnroll(Container container, RoleType roleType, RoleBarrier roleBarrier)
        {
            var barrier = (int) roleBarrier;

            return _db.DbContext.Roles.Where(r =>
                                          r.ContainerTypeName == container.Type.Name &&
                                          r.RoleTypeName == roleType.Name &&
                                          r.Barrier != barrier
                ).Any();
        }
예제 #4
0
        private void InheritedEnrollParents(User user, Container container, RoleType roleType)
        {
            var current = container;

            while (current != null){
                if (!PermissionToEnroll(current, roleType, RoleBarrier.Bottom))
                    return;

                EnrollInherited(user, current, roleType);

                current = current.Parent;
            }
        }
예제 #5
0
        private void InheritedEnrollChilds(User user, Container container, RoleType roleType)
        {
            foreach (var child in container.Childs)
            {
                if (!PermissionToEnroll(child, roleType, RoleBarrier.Top))
                    continue;

                EnrollInherited(user, child, roleType);

                InheritedEnrollChilds(user, child, roleType);
            }
        }
예제 #6
0
        private bool InheritedDisenroll(User user, Container container, RoleType roleType)
        {
            var enroll = _db.DbContext.Enrolls.Find(user.Name, container.Id, roleType.Name, container.Type.StructureId);

            if (enroll == null)
                return false;

            enroll.InheritedCount -= 1;

            if (enroll.InheritedCount == 0)
                if (enroll.Inherited)
                {
                    _db.DbContext.Enrolls.Remove(enroll);

                    InvokeOnDisenrollUser(enroll, container);
                }

            return true;
        }
예제 #7
0
 private bool ExisteRole(Container container, RoleType roleType)
 {
     return _db.DbContext.Roles.Where(r =>
                                   r.ContainerTypeName == container.Type.Name &&
                                   r.RoleTypeName == roleType.Name
         ).Any();
 }
예제 #8
0
        private bool EnrollInherited(User user, Container container, RoleType roleType)
        {
            var enroll = _db.DbContext.Enrolls.Find(user.Name, container.Id, roleType.Name, container.Type.StructureId);

            if (enroll != null)
            {
                enroll.InheritedCount += 1;

                return true;
            }

            enroll = new Enroll()
            {
                User = user,
                Container = container,
                RoleType = roleType,
                Inherited = true,
                InheritedCount = 1
            };

            _db.DbContext.Enrolls.Add(enroll);

            InvokeOnEnrollUser(enroll);

            return true;
        }