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); } } }
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()); } }
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()); } }
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); } } }
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()); } }
public virtual void CheckEntity(IRoleBased entity, EntityEntry <IRoleBased> entityEntry, IUnitOfWorkCachedSearching unitOfWork) { var roleChecker = (IRoleChecker)resolveManager.Resolve(registerRoleCheckers[entity.GetType()]); roleChecker.CheckEntity(entity, entityEntry, unitOfWork); }
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()); } }