public function __construct() { $this->private_cloud_repository = new SapphirePrivateCloudRepository(); $this->private_cloud_draft_repository = new SapphirePrivateCloudRepository(true); $this->marketplace_type_repository = new SapphireMarketPlaceTypeRepository(); //google geo coding settings $google_geo_coding_api_key = null; $google_geo_coding_client_id = null; $google_geo_coding_private_key = null; if (defined('GOOGLE_GEO_CODING_API_KEY')) { $google_geo_coding_api_key = GOOGLE_GEO_CODING_API_KEY; } else { if (defined('GOOGLE_GEO_CODING_CLIENT_ID') && defined('GOOGLE_GEO_CODING_PRIVATE_KEY')) { $google_geo_coding_client_id = GOOGLE_GEO_CODING_CLIENT_ID; $google_geo_coding_private_key = GOOGLE_GEO_CODING_PRIVATE_KEY; } } $manager = new PrivateCloudManager($this->private_cloud_repository, new SapphireMarketPlaceVideoTypeRepository(), $this->marketplace_type_repository, new SapphireGuestOSTypeRepository(), new SapphireHyperVisorTypeRepository(), new SapphireOpenStackApiVersionRepository(), new SapphireOpenStackComponentRepository(), new SapphireOpenStackReleaseRepository(), new SapphireRegionRepository(), new SapphireSupportChannelTypeRepository(), new SapphireOpenStackReleaseSupportedApiVersionRepository(), new PrivateCloudAddPolicy($this->private_cloud_repository, $this->marketplace_type_repository), new CompanyServiceCanAddResourcePolicy(), new CompanyServiceCanAddVideoPolicy(), new PrivateCloudFactory(), new MarketplaceFactory(), new ValidatorFactory(), new OpenStackApiFactory(), new GoogleGeoCodingService(new SapphireGeoCodingQueryRepository(), new UtilFactory(), SapphireTransactionManager::getInstance(), $google_geo_coding_api_key, $google_geo_coding_client_id, $google_geo_coding_private_key), null, new SessionCacheService(), SapphireTransactionManager::getInstance()); $draft_manager = new PrivateCloudManager($this->private_cloud_draft_repository, new SapphireMarketPlaceVideoTypeRepository(), $this->marketplace_type_repository, new SapphireGuestOSTypeRepository(), new SapphireHyperVisorTypeRepository(), new SapphireOpenStackApiVersionRepository(), new SapphireOpenStackComponentRepository(), new SapphireOpenStackReleaseRepository(), new SapphireRegionRepository(), new SapphireSupportChannelTypeRepository(), new SapphireOpenStackReleaseSupportedApiVersionRepository(), new PrivateCloudAddPolicy($this->private_cloud_draft_repository, $this->marketplace_type_repository), new CompanyServiceCanAddResourcePolicy(), new CompanyServiceCanAddVideoPolicy(), new PrivateCloudDraftFactory(), new MarketplaceDraftFactory(), new ValidatorFactory(), new OpenStackApiFactory(), new GoogleGeoCodingService(new SapphireGeoCodingQueryRepository(), new UtilFactory(), SapphireTransactionManager::getInstance(), $google_geo_coding_api_key, $google_geo_coding_client_id, $google_geo_coding_private_key), null, new SessionCacheService(), SapphireTransactionManager::getInstance()); parent::__construct($manager, $draft_manager, new PrivateCloudFactory(), new PrivateCloudDraftFactory()); // filters ... $this_var = $this; $current_user = $this->current_user; $repository = $this->private_cloud_repository; $draft_repository = $this->private_cloud_draft_repository; $this->addBeforeFilter('addCompanyService', 'check_add_company', function ($request) use($this_var, $current_user) { $data = $this_var->getJsonRequest(); if (!$data) { return $this_var->serverError(); } $company_id = intval(@$data['company_id']); if (!$current_user->isMarketPlaceAdminOfCompany(IPrivateCloudService::MarketPlaceGroupSlug, $company_id)) { return $this_var->permissionFailure(); } }); $this->addBeforeFilter('updateCompanyService', 'check_update_company', function ($request) use($this_var, $current_user) { $data = $this_var->getJsonRequest(); if (!$data) { return $this_var->serverError(); } if (!$current_user->isMarketPlaceAdminOfCompany(IPrivateCloudService::MarketPlaceGroupSlug, intval(@$data['company_id']))) { return $this_var->permissionFailure(); } }); $this->addBeforeFilter('deleteCompanyService', 'check_delete_company', function ($request) use($this_var, $current_user, $repository, $draft_repository) { $company_service_id = intval($request->param('COMPANY_SERVICE_ID')); $is_draft = intval($this->request->param('IS_DRAFT')); $company_service = $is_draft ? $draft_repository->getById($company_service_id) : $repository->getById($company_service_id); if (!$current_user->isMarketPlaceAdminOfCompany(IPrivateCloudService::MarketPlaceGroupSlug, $company_service->getCompany()->getIdentifier())) { return $this_var->permissionFailure(); } }); }
public function __construct() { $this->consultant_repository = new SapphireConsultantRepository(); $this->consultant_draft_repository = new SapphireConsultantRepository(true); $this->marketplace_type_repository = new SapphireMarketPlaceTypeRepository(); $this->languages_repository = new SapphireSpokenLanguageRepository(); $manager = new ConsultantManager($this->consultant_repository, new SapphireMarketPlaceVideoTypeRepository(), $this->marketplace_type_repository, new SapphireOpenStackApiVersionRepository(), new SapphireOpenStackComponentRepository(), new SapphireOpenStackReleaseRepository(), new SapphireRegionRepository(), new SapphireSupportChannelTypeRepository(), $this->languages_repository, new SapphireConfigurationManagementTypeRepository(), new SapphireConsultantServiceOfferedTypeRepository(), new ConsultantAddPolicy($this->consultant_repository, $this->marketplace_type_repository), new CompanyServiceCanAddResourcePolicy(), new CompanyServiceCanAddVideoPolicy(), new ConsultantFactory(), new MarketplaceFactory(), new ValidatorFactory(), new OpenStackApiFactory(), new GoogleGeoCodingService(new SapphireGeoCodingQueryRepository(), new UtilFactory(), SapphireTransactionManager::getInstance()), null, new SessionCacheService(), SapphireTransactionManager::getInstance()); $draft_manager = new ConsultantManager($this->consultant_draft_repository, new SapphireMarketPlaceVideoTypeRepository(), $this->marketplace_type_repository, new SapphireOpenStackApiVersionRepository(), new SapphireOpenStackComponentRepository(), new SapphireOpenStackReleaseRepository(), new SapphireRegionRepository(), new SapphireSupportChannelTypeRepository(), $this->languages_repository, new SapphireConfigurationManagementTypeRepository(), new SapphireConsultantServiceOfferedTypeRepository(), new ConsultantAddPolicy($this->consultant_draft_repository, $this->marketplace_type_repository), new CompanyServiceCanAddResourcePolicy(), new CompanyServiceCanAddVideoPolicy(), new ConsultantDraftFactory(), new MarketplaceDraftFactory(), new ValidatorFactory(), new OpenStackApiFactory(), new GoogleGeoCodingService(new SapphireGeoCodingQueryRepository(), new UtilFactory(), SapphireTransactionManager::getInstance()), null, new SessionCacheService(), SapphireTransactionManager::getInstance()); parent::__construct($manager, $draft_manager, new ConsultantFactory(), new ConsultantDraftFactory()); // filters ... $this_var = $this; $current_user = $this->current_user; $repository = $this->consultant_repository; $draft_repository = $this->consultant_draft_repository; $this->addBeforeFilter('addCompanyService', 'check_add_company', function ($request) use($this_var, $current_user) { $data = $this_var->getJsonRequest(); if (!$data) { return $this->serverError(); } $company_id = intval(@$data['company_id']); if (!$current_user->isMarketPlaceAdminOfCompany(IConsultant::MarketPlaceGroupSlug, $company_id)) { return $this_var->permissionFailure(); } }); $this->addBeforeFilter('updateCompanyService', 'check_update_company', function ($request) use($this_var, $current_user) { $data = $this_var->getJsonRequest(); if (!$data) { return $this->serverError(); } if (!$current_user->isMarketPlaceAdminOfCompany(IConsultant::MarketPlaceGroupSlug, intval(@$data['company_id']))) { return $this_var->permissionFailure(); } }); $this->addBeforeFilter('deleteCompanyService', 'check_delete_company', function ($request) use($this_var, $current_user, $repository, $draft_repository) { $company_service_id = intval($request->param('COMPANY_SERVICE_ID')); $is_draft = intval($this->request->param('IS_DRAFT')); $company_service = $is_draft ? $draft_repository->getById($company_service_id) : $repository->getById($company_service_id); if (!$current_user->isMarketPlaceAdminOfCompany(IConsultant::MarketPlaceGroupSlug, $company_service->getCompany()->getIdentifier())) { return $this_var->permissionFailure(); } }); }