diff --git a/lib/Alchemy/Phrasea/Command/Developer/RegenerateSqliteDb.php b/lib/Alchemy/Phrasea/Command/Developer/RegenerateSqliteDb.php index a6d9606dee..9d1f07394f 100644 --- a/lib/Alchemy/Phrasea/Command/Developer/RegenerateSqliteDb.php +++ b/lib/Alchemy/Phrasea/Command/Developer/RegenerateSqliteDb.php @@ -251,6 +251,21 @@ class RegenerateSqliteDb extends Command $application->setClientSecret(\API_OAuth2_Application_OfficePlugin::CLIENT_SECRET); $this->container['manipulator.api-application']->update($application); + + $application = $this->container['manipulator.api-application']->create( + \API_OAuth2_Application_AdobeCCPlugin::CLIENT_NAME, + ApiApplication::DESKTOP_TYPE, + '', + 'http://www.phraseanet.com', + null, + ApiApplication::NATIVE_APP_REDIRECT_URI + ); + + $application->setGrantPassword(true); + $application->setClientId(\API_OAuth2_Application_AdobeCCPlugin::CLIENT_ID); + $application->setClientSecret(\API_OAuth2_Application_AdobeCCPlugin::CLIENT_SECRET); + + $this->container['manipulator.api-application']->update($application); } private function insertAuthFailures(EntityManager $em, \Pimple $DI) diff --git a/lib/Alchemy/Phrasea/Core/Event/Listener/OAuthListener.php b/lib/Alchemy/Phrasea/Core/Event/Listener/OAuthListener.php index ee8535f834..1ccbd0580a 100644 --- a/lib/Alchemy/Phrasea/Core/Event/Listener/OAuthListener.php +++ b/lib/Alchemy/Phrasea/Core/Event/Listener/OAuthListener.php @@ -89,6 +89,12 @@ class OAuthListener return Result::createError($request, 403, 'The use of Office Plugin is not allowed.')->createResponse(); } + if ($oAuth2App->getClientId() == \API_OAuth2_Application_AdobeCCPlugin::CLIENT_ID + && !$conf->get(['registry', 'api-clients', 'adobe_cc-enabled']) + ) { + return Result::createError($request, 403, 'The use of AdobeCC Plugin is not allowed.')->createResponse(); + } + $authentication = $this->getAuthenticator($app); if ($authentication->isAuthenticated()) { diff --git a/lib/Alchemy/Phrasea/Core/Event/Subscriber/PhraseaInstallSubscriber.php b/lib/Alchemy/Phrasea/Core/Event/Subscriber/PhraseaInstallSubscriber.php index 91d7efaaac..da083bd9ea 100644 --- a/lib/Alchemy/Phrasea/Core/Event/Subscriber/PhraseaInstallSubscriber.php +++ b/lib/Alchemy/Phrasea/Core/Event/Subscriber/PhraseaInstallSubscriber.php @@ -38,6 +38,7 @@ class PhraseaInstallSubscriber implements EventSubscriberInterface { $this->createNavigatorApplication(); $this->createOfficePluginApplication(); + $this->createAdobeCCPluginApplication(); $this->generateProxies(); } @@ -77,6 +78,24 @@ class PhraseaInstallSubscriber implements EventSubscriberInterface $this->app['manipulator.api-application']->update($application); } + private function createAdobeCCPluginApplication() + { + $application = $this->app['manipulator.api-application']->create( + \API_OAuth2_Application_AdobeCCPlugin::CLIENT_NAME, + ApiApplication::DESKTOP_TYPE, + '', + 'http://www.phraseanet.com', + null, + ApiApplication::NATIVE_APP_REDIRECT_URI + ); + + $application->setGrantPassword(true); + $application->setClientId(\API_OAuth2_Application_AdobeCCPlugin::CLIENT_ID); + $application->setClientSecret(\API_OAuth2_Application_AdobeCCPlugin::CLIENT_SECRET); + + $this->app['manipulator.api-application']->update($application); + } + private function generateProxies() { $process = new Process('php ' . $this->app['root.path']. '/bin/developer orm:generate:proxies'); diff --git a/lib/Alchemy/Phrasea/Core/Version.php b/lib/Alchemy/Phrasea/Core/Version.php index 1fbafcb5b7..f42332439b 100644 --- a/lib/Alchemy/Phrasea/Core/Version.php +++ b/lib/Alchemy/Phrasea/Core/Version.php @@ -16,7 +16,7 @@ class Version /** * @var string */ - private $number = '4.1.0-alpha.9'; + private $number = '4.1.0-alpha.10'; /** * @var string diff --git a/lib/classes/API/OAuth2/Application/AdobeCCPlugin.php b/lib/classes/API/OAuth2/Application/AdobeCCPlugin.php new file mode 100644 index 0000000000..c8b7e581e5 --- /dev/null +++ b/lib/classes/API/OAuth2/Application/AdobeCCPlugin.php @@ -0,0 +1,17 @@ +release; + } + + /** + * {@inheritdoc} + */ + public function getDoctrineMigrations() + { + return []; + } + + /** + * {@inheritdoc} + */ + public function require_all_upgrades() + { + return false; + } + + /** + * {@inheritdoc} + */ + public function concern() + { + return $this->concern; + } + + /** + * {@inheritdoc} + */ + public function apply(base $databox, Application $app) + { + // create an api application for adobeCC + /** @var ApiApplicationRepository $repo */ + $repo = $app['repo.api-applications']; + if(!$repo->findByClientId(\API_OAuth2_Application_AdobeCCPlugin::CLIENT_ID)) { + + /** @var ApiApplicationManipulator $manipulator */ + $manipulator = $app['manipulator.api-application']; + + $application = $manipulator->create( + \API_OAuth2_Application_AdobeCCPlugin::CLIENT_NAME, + ApiApplication::DESKTOP_TYPE, + '', + 'http://www.phraseanet.com', + null, + ApiApplication::NATIVE_APP_REDIRECT_URI + ); + + $application->setGrantPassword(true); + $application->setClientId(\API_OAuth2_Application_AdobeCCPlugin::CLIENT_ID); + $application->setClientSecret(\API_OAuth2_Application_AdobeCCPlugin::CLIENT_SECRET); + + $manipulator->update($application); + } + return true; + } +}