Exemple #1
0
        public override void CheckEntity(IRoleBased entity, EntityEntry <IRoleBased> entityEntry, IUnitOfWorkCachedSearching unitOfWork)
        {
            var serviceChannel = entity as ServiceChannel;

            if (serviceChannel != null)
            {
                var serviceChannelVersioned = versioningManager.GetNotModifiedVersion(serviceChannel.Versions);

                if (serviceChannelVersioned != null)
                {
                    roleChecker.CheckEntity(GetEntity <ServiceChannelVersioned>(serviceChannelVersioned.Id, unitOfWork), null, unitOfWork);
                }
            }
        }
Exemple #2
0
        public override void CheckEntity(IRoleBased entity, EntityEntry <IRoleBased> entityEntry, IUnitOfWorkCachedSearching unitOfWork)
        {
            var connection = entity as GeneralDescriptionServiceChannel;

            if (connection != null)
            {
                //roleChecker.CheckEntity(GetEntity<ServiceChannel>(connection.ServiceChannelId, unitOfWork, q => q.Include(j => j.Versions)), null, unitOfWork); PTV-1675
                //roleChecker.CheckEntity(GetEntity<ServiceVersioned>(connection.ServiceId, unitOfWork), null, unitOfWork);
                if (connection.StatutoryServiceGeneralDescription != null)
                {
                    roleChecker.CheckEntity(GetEntity <StatutoryServiceGeneralDescriptionVersioned>(connection.StatutoryServiceGeneralDescriptionId, unitOfWork), null, unitOfWork);
                }
            }
        }
        public override void CheckEntity(IRoleBased entity, EntityEntry <IRoleBased> entityEntry, IUnitOfWorkCachedSearching unitOfWork)
        {
            var service = entity as Service;

            if (service == null)
            {
                return;
            }

            var serviceVersioned = GetServiceVersioned(service, unitOfWork);

            if (serviceVersioned != null)
            {
                roleChecker.CheckEntity(serviceVersioned, null, unitOfWork);
            }
        }
        public override void CheckEntity(IRoleBased entity, EntityEntry <IRoleBased> entityEntry, IUnitOfWorkCachedSearching unitOfWork)
        {
            var checkStatus = false;
            var vmUserInfo  = userInfoService.GetUserInfo();
            var permissons  = vmUserInfo?.Permisions[vmUserInfo.Role][DomainEnum.CurrentIssues.ToCamelCase()];

            if ((permissons != null) && (permissons.RulesAll & PermisionEnum.Update) > 0)
            {
                checkStatus = true;
            }

            if (!checkStatus)
            {
                // TODO is list of Roles really needed???
                ThrowError(userIdentification, new List <UserRoleEnum>());
            }
        }
        public override void CheckEntity(IRoleBased entity, EntityEntry <IRoleBased> entityEntry, IUnitOfWorkCachedSearching unitOfWork)
        {
            var checkStatus   = false;
            var userOrgStruct = GetUserCompleteOrgStructure(this.userOrganizationService, unitOfWork);
            var service       = entity as ServiceVersioned;
            var isAdd         = IsAdded(entityEntry);

            // Have to add check for userOrgStruct. If there is no items within userOrgStruck role will always be Eeva because of call for FirstOrDefault() (see below)!
            if (service != null && userOrgStruct?.Count > 0)
            {
                var prevOrganizationId = GetOriginalValue <Guid?>(entityEntry, "OrganizationId");
                var role = userOrgStruct.SelectMany(x => x).Select(y => y.Role).OrderBy(i => i).FirstOrDefault(); // This will always return Eeva if userOrgStruct does not have any items - the default for UserRoleEnum is Eeva (0)!
                var userOrganizations = userOrgStruct.SelectMany(x => x).Select(i => i.OrganizationId).ToList();

                switch (role)
                {
                case UserRoleEnum.Eeva:
                {
                    checkStatus = true;
                    break;
                }

                case UserRoleEnum.Pete:
                case UserRoleEnum.Shirley:
                {
                    checkStatus = CheckAllIds(userOrganizations, new List <Guid?> {
                            service.OrganizationId, prevOrganizationId
                        });
                    break;
                }

                default:
                {
                    checkStatus = false;
                    break;
                }
                }
            }
            if (!checkStatus)
            {
                ThrowError(userIdentification, userOrgStruct.SelectMany(i => i).Select(j => j.Role).Distinct());
            }
        }
Exemple #6
0
        public override void CheckEntity(IRoleBased entity, EntityEntry <IRoleBased> entityEntry, IUnitOfWorkCachedSearching unitOfWork)
        {
            var checkStatus       = false;
            var userOrgStruct     = GetUserCompleteOrgStructure(this.userOrganizationService, unitOfWork);
            var serviceCollection = entity as ServiceCollectionVersioned;
            var isAdd             = IsAdded(entityEntry);

            if (serviceCollection != null)
            {
                var prevOrganizationId = GetOriginalValue <Guid?>(entityEntry, "OrganizationId");
                var role = userOrgStruct.SelectMany(x => x).Select(y => y.Role).OrderBy(i => i).FirstOrDefault();
                var userOrganizations = userOrgStruct.SelectMany(x => x).Select(i => i.OrganizationId).ToList();

                switch (role)
                {
                case UserRoleEnum.Eeva:
                {
                    checkStatus = true;
                    break;
                }

                case UserRoleEnum.Pete:
                case UserRoleEnum.Shirley:
                {
                    checkStatus = CheckAllIds(userOrganizations, new List <Guid?> {
                            serviceCollection.OrganizationId, prevOrganizationId
                        });
                    break;
                }

                default:
                {
                    checkStatus = false;
                    break;
                }
                }
            }
            if (!checkStatus)
            {
                ThrowError(userIdentification, userOrgStruct.SelectMany(i => i).Select(j => j.Role).Distinct());
            }
        }
Exemple #7
0
        public override void CheckEntity(IRoleBased entity, EntityEntry <IRoleBased> entityEntry, IUnitOfWorkCachedSearching unitOfWork)
        {
            var locking = entity as Locking;

            if (locking != null)
            {
                if (locking.TableName.ToUpper() == typeof(ServiceChannelVersioned).Name.ToUpper())
                {
                    roleChecker.CheckEntity(GetEntity <ServiceChannelVersioned>(locking.LockedEntityId.Value, unitOfWork), null, unitOfWork);
                }
                else if (locking.TableName.ToUpper() == typeof(ServiceVersioned).Name.ToUpper())
                {
                    roleChecker.CheckEntity(GetEntity <ServiceVersioned>(locking.LockedEntityId.Value, unitOfWork, q => q.Include(i => i.OrganizationServices)), null, unitOfWork);
                }
                else if (locking.TableName.ToUpper() == typeof(OrganizationVersioned).Name.ToUpper())
                {
                    roleChecker.CheckEntity(GetEntity <OrganizationVersioned>(locking.LockedEntityId.Value, unitOfWork), null, unitOfWork);
                }
            }
        }
Exemple #8
0
        public override void CheckEntity(IRoleBased entity, EntityEntry <IRoleBased> entityEntry, IUnitOfWorkCachedSearching unitOfWork)
        {
            var checkStatus   = false;
            var userOrgStruct = GetUserCompleteOrgStructure(this.userOrganizationService, unitOfWork);
            var statutoryServiceGeneralDescription = entity as StatutoryServiceGeneralDescriptionVersioned;

            if (statutoryServiceGeneralDescription != null)
            {
                foreach (var oneOrgTree in userOrgStruct)
                {
                    var role = oneOrgTree.First()?.Role;
                    switch (role)
                    {
                    case UserRoleEnum.Eeva:
                    {
                        checkStatus = true;
                        break;
                    }

                    case UserRoleEnum.Pete:
                    case UserRoleEnum.Shirley:
                    default:
                    {
                        checkStatus = false;
                        break;
                    }
                    }
                    if (checkStatus)
                    {
                        break;
                    }
                }
            }
            if (!checkStatus)
            {
                ThrowError(userIdentification, userOrgStruct.SelectMany(i => i).Select(j => j.Role).Distinct());
            }
        }
Exemple #9
0
        public virtual void CheckEntity(IRoleBased entity, EntityEntry <IRoleBased> entityEntry, IUnitOfWorkCachedSearching unitOfWork)
        {
            var roleChecker = (IRoleChecker)resolveManager.Resolve(registerRoleCheckers[entity.GetType()]);

            roleChecker.CheckEntity(entity, entityEntry, unitOfWork);
        }
Exemple #10
0
 public abstract void CheckEntity(IRoleBased entity, EntityEntry <IRoleBased> entityEntry, IUnitOfWorkCachedSearching unitOfWork);
        public override void CheckEntity(IRoleBased entity, EntityEntry <IRoleBased> entityEntry, IUnitOfWorkCachedSearching unitOfWork)
        {
            var userOrgStruct = GetUserCompleteOrgStructure(this.userOrganizationService, unitOfWork);
            var organization  = entity as OrganizationVersioned;
            var checkStatus   = true;

            if (organization != null)
            {
                //var userOrganizations = userOrganizationService.GetAllUserOrganizations(unitOfWork);
                var isAdd        = IsAdded(entityEntry) && typesCache.GetByValue <PublishingStatusType>(organization.PublishingStatusId) != PublishingStatus.Modified.ToString();
                var prevParentId = GetOrganizationOriginalValue <Guid?>(organization, entityEntry, "ParentId", unitOfWork);

                foreach (var oneOrgTree in userOrgStruct)
                {
                    checkStatus = true;
                    var role = oneOrgTree.First()?.Role;
                    var userOrganizations = oneOrgTree.Select(i => i.OrganizationId).ToList();
                    switch (role)
                    {
                    case UserRoleEnum.Eeva:
                    {
                        checkStatus = true;
                        break;
                    }

                    case UserRoleEnum.Pete:
                    {
                        //Check parents
                        if (isAdd)     //can add
                        {
                            checkStatus = CheckAllIds(userOrganizations, new List <Guid?> {
                                    organization.ParentId
                                });
                        }
                        else
                        {
                            if (organization.ParentId != prevParentId)     //can manage structure
                            {
                                checkStatus = CheckAllIds(userOrganizations, new List <Guid?> {
                                        organization.ParentId, prevParentId
                                    });
                            }
                        }

                        //check update
                        if (checkStatus && !isAdd)
                        {
                            checkStatus = CheckAllIds(userOrganizations, new List <Guid?> {
                                    organization.UnificRootId
                                });
                        }
                        //check add
                        if (checkStatus && isAdd)
                        {
                            checkStatus = organization.ParentId.HasValue;
                        }
                        //can not create main org
                        if (checkStatus && !isAdd && prevParentId != null)
                        {
                            checkStatus = organization.ParentId.HasValue;
                        }
                        break;
                    }

                    case UserRoleEnum.Shirley:
                    {
                        checkStatus = CheckAllIds(userOrganizations, new List <Guid?> {
                                organization.UnificRootId
                            });

                        //can not add organization
                        checkStatus = checkStatus && !isAdd;
                        //can not change structure
                        if (checkStatus && entityEntry != null)
                        {
                            checkStatus = checkStatus && organization.ParentId == prevParentId;
                        }
                        //PTV-2044 - code commented, based on the task shirley should be able to publish the organization
                        //can not change publishing status
                        //if (checkStatus && prevPublishingStatusId.HasValue)
                        //{
                        //    checkStatus = checkStatus && organization.PublishingStatusId == prevPublishingStatusId;
                        //}
                        break;
                    }

                    default:
                    {
                        checkStatus = false;
                        break;
                    }
                    }
                    if (checkStatus)
                    {
                        break;
                    }
                }
            }
            if (!checkStatus)
            {
                ThrowError(userIdentification, userOrgStruct.SelectMany(i => i).Select(j => j.Role).Distinct());
            }
        }
        public override void CheckEntity(IRoleBased entity, EntityEntry <IRoleBased> entityEntry, IUnitOfWorkCachedSearching unitOfWork)
        {
            var userOrgStruct = GetUserCompleteOrgStructure(this.userOrganizationService, unitOfWork);
            var channel       = entity as ServiceChannelVersioned;
            var checkStatus   = false;

            if (channel != null)
            {
                //var userOrganizations = userOrganizationService.GetAllUserOrganizations(unitOfWork);
                //var isAdd = IsAdded(entityEntry);
                var prevOrganizationId = GetOriginalValue <Guid?>(entityEntry, "OrganizationId");
                foreach (var oneOrgTree in userOrgStruct)
                {
                    checkStatus = false;

                    var role = oneOrgTree.First()?.Role;
                    var userOrganizations = oneOrgTree.Select(i => i.OrganizationId).ToList();
                    switch (role)
                    {
                    case UserRoleEnum.Eeva:
                    {
                        checkStatus = true;
                        break;
                    }

                    case UserRoleEnum.Pete:
                    {
                        //can add or modify
                        checkStatus = CheckAllIds(userOrganizations, new List <Guid?> {
                                channel.OrganizationId, prevOrganizationId
                            });
                        break;
                    }

                    case UserRoleEnum.Shirley:
                    {
                        //                            //can modify
                        //                            checkStatus = !isAdd && CheckAllIds(userOrganizations, new List<Guid?> { channel.OrganizationId, prevOrganizationId });
                        //                            //can not remove
                        //                            checkStatus = checkStatus && channel.PublishingStatusId != typesCache.Get<PublishingStatusType>(PublishingStatus.Deleted.ToString());
                        checkStatus = CheckAllIds(userOrganizations, new List <Guid?> {
                                channel.OrganizationId, prevOrganizationId
                            });
                        break;
                    }

                    default:
                    {
                        checkStatus = false;
                        break;
                    }
                    }
                    if (checkStatus)
                    {
                        break;
                    }
                }
            }
            if (!checkStatus)
            {
                ThrowError(userIdentification, userOrgStruct.SelectMany(i => i).Select(j => j.Role).Distinct());
            }
        }