diff --git a/Makefile b/Makefile index c490fe30f0..811621668d 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,7 @@ clean_assets: rm -rf ./node_modules rm -rf ./www/assets rm -rf ./www/bower_components + touch ./node_modules/.gitkeep config: @php bin/console compile:configuration diff --git a/config/configuration.sample.yml b/config/configuration.sample.yml index abbd5ca265..2ca5b1c149 100644 --- a/config/configuration.sample.yml +++ b/config/configuration.sample.yml @@ -7,7 +7,6 @@ main: languages: [] key: '' api_require_ssl: true - api_disabled: true database: host: 127.0.0.1 port: 3306 diff --git a/lib/Alchemy/Phrasea/Controller/Admin/SetupController.php b/lib/Alchemy/Phrasea/Controller/Admin/SetupController.php index 88b0918436..a3738d8e91 100644 --- a/lib/Alchemy/Phrasea/Controller/Admin/SetupController.php +++ b/lib/Alchemy/Phrasea/Controller/Admin/SetupController.php @@ -11,6 +11,8 @@ namespace Alchemy\Phrasea\Controller\Admin; use Alchemy\Phrasea\Controller\Controller; +use Alchemy\Phrasea\Core\Configuration\Configuration; +use Alchemy\Phrasea\Core\Configuration\PropertyAccess; use Alchemy\Phrasea\Core\Configuration\RegistryManipulator; use Symfony\Component\HttpFoundation\Request; @@ -20,12 +22,15 @@ class SetupController extends Controller { /** @var RegistryManipulator $manipulator */ $manipulator = $this->app['registry.manipulator']; + /** @var PropertyAccess $config */ + $config = $this->app['conf']; + $form = $manipulator->createForm($this->app['conf']); if ('POST' === $request->getMethod()) { $form->submit($request->request->all()); if ($form->isValid()) { - $this->app['conf']->set('registry', $manipulator->getRegistryData($form)); + $config->set('registry', $manipulator->getRegistryData($form)); return $this->app->redirectPath('setup_display_globals'); } diff --git a/lib/Alchemy/Phrasea/ControllerProvider/Api/Api.php b/lib/Alchemy/Phrasea/ControllerProvider/Api/Api.php new file mode 100644 index 0000000000..eccc9a0f3d --- /dev/null +++ b/lib/Alchemy/Phrasea/ControllerProvider/Api/Api.php @@ -0,0 +1,18 @@ +get([ 'registry', 'api-clients', 'api-enabled' ], true) == true; + } +} diff --git a/lib/Alchemy/Phrasea/ControllerProvider/Api/OAuth2.php b/lib/Alchemy/Phrasea/ControllerProvider/Api/OAuth2.php index 21a344ed75..d22c385d88 100644 --- a/lib/Alchemy/Phrasea/ControllerProvider/Api/OAuth2.php +++ b/lib/Alchemy/Phrasea/ControllerProvider/Api/OAuth2.php @@ -13,12 +13,13 @@ namespace Alchemy\Phrasea\ControllerProvider\Api; use Alchemy\Phrasea\Application as PhraseaApplication; use Alchemy\Phrasea\Controller\Api\OAuth2Controller; +use Alchemy\Phrasea\Core\Configuration\PropertyAccess; use Silex\Application; use Silex\ControllerCollection; use Silex\ControllerProviderInterface; use Silex\ServiceProviderInterface; -class OAuth2 implements ControllerProviderInterface, ServiceProviderInterface +class OAuth2 extends Api implements ControllerProviderInterface, ServiceProviderInterface { public function register(Application $app) { @@ -34,6 +35,10 @@ class OAuth2 implements ControllerProviderInterface, ServiceProviderInterface public function connect(Application $app) { + if (! $this->isApiEnabled($app)) { + return $app['controllers_factory']; + } + /** @var ControllerCollection $controllers */ $controllers = $app['controllers_factory']; diff --git a/lib/Alchemy/Phrasea/ControllerProvider/Api/V1.php b/lib/Alchemy/Phrasea/ControllerProvider/Api/V1.php index d179c68d96..bd2731a0a4 100644 --- a/lib/Alchemy/Phrasea/ControllerProvider/Api/V1.php +++ b/lib/Alchemy/Phrasea/ControllerProvider/Api/V1.php @@ -14,13 +14,14 @@ namespace Alchemy\Phrasea\ControllerProvider\Api; use Alchemy\Phrasea\Application as PhraseaApplication; use Alchemy\Phrasea\Controller\Api\V1Controller; use Alchemy\Phrasea\Controller\LazyLocator; +use Alchemy\Phrasea\Core\Configuration\PropertyAccess; use Alchemy\Phrasea\Core\Event\Listener\OAuthListener; use Silex\Application; use Silex\ControllerCollection; use Silex\ControllerProviderInterface; use Silex\ServiceProviderInterface; -class V1 implements ControllerProviderInterface, ServiceProviderInterface +class V1 extends Api implements ControllerProviderInterface, ServiceProviderInterface { const VERSION = '1.5.0'; @@ -46,6 +47,10 @@ class V1 implements ControllerProviderInterface, ServiceProviderInterface public function connect(Application $app) { + if (! $this->isApiEnabled($app)) { + return $app['controllers_factory']; + } + /** @var ControllerCollection $controllers */ $controllers = $app['controllers_factory']; diff --git a/lib/Alchemy/Phrasea/ControllerProvider/Api/V2.php b/lib/Alchemy/Phrasea/ControllerProvider/Api/V2.php index fc9faa206a..c1b0651b3d 100644 --- a/lib/Alchemy/Phrasea/ControllerProvider/Api/V2.php +++ b/lib/Alchemy/Phrasea/ControllerProvider/Api/V2.php @@ -15,6 +15,7 @@ use Alchemy\Phrasea\Controller\Api\LazaretController; use Alchemy\Phrasea\Controller\Api\SearchController; use Alchemy\Phrasea\Controller\LazyLocator; use Alchemy\Phrasea\ControllerProvider\ControllerProviderTrait; +use Alchemy\Phrasea\Core\Configuration\PropertyAccess; use Alchemy\Phrasea\Core\Event\Listener\OAuthListener; use Alchemy\Phrasea\Order\Controller\ApiOrderController; use Silex\Application; @@ -22,7 +23,7 @@ use Silex\Controller; use Silex\ControllerProviderInterface; use Silex\ServiceProviderInterface; -class V2 implements ControllerProviderInterface, ServiceProviderInterface +class V2 extends Api implements ControllerProviderInterface, ServiceProviderInterface { use ControllerProviderTrait; @@ -69,6 +70,10 @@ class V2 implements ControllerProviderInterface, ServiceProviderInterface public function connect(Application $app) { + if (! $this->isApiEnabled($app)) { + return $app['controllers_factory']; + } + $controllers = $this->createCollection($app); $controllers->before(new OAuthListener()); diff --git a/lib/Alchemy/Phrasea/Core/Configuration/RegistryManipulator.php b/lib/Alchemy/Phrasea/Core/Configuration/RegistryManipulator.php index fc65b7fa4a..a8a73423c9 100644 --- a/lib/Alchemy/Phrasea/Core/Configuration/RegistryManipulator.php +++ b/lib/Alchemy/Phrasea/Core/Configuration/RegistryManipulator.php @@ -19,10 +19,26 @@ use Symfony\Component\Translation\TranslatorInterface; class RegistryManipulator { + /** + * @var FormFactoryInterface + */ private $factory; + + /** + * @var array + */ private $languages; + + /** + * @var TranslatorInterface + */ private $translator; + /** + * @param FormFactoryInterface $factory + * @param TranslatorInterface $translator + * @param array $languages + */ public function __construct(FormFactoryInterface $factory, TranslatorInterface $translator, array $languages) { $this->factory = $factory; @@ -128,6 +144,7 @@ class RegistryManipulator 'enabled' => false, ], 'api-clients' => [ + 'api-enabled' => true, 'navigator-enabled' => true, 'office-enabled' => true, ], diff --git a/lib/Alchemy/Phrasea/Form/Configuration/APIClientsFormType.php b/lib/Alchemy/Phrasea/Form/Configuration/APIClientsFormType.php index 27194c264e..21b9f8586c 100644 --- a/lib/Alchemy/Phrasea/Form/Configuration/APIClientsFormType.php +++ b/lib/Alchemy/Phrasea/Form/Configuration/APIClientsFormType.php @@ -18,6 +18,11 @@ class APIClientsFormType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { + $builder->add('api-enabled', 'checkbox', [ + 'label' => 'Enable Phraseanet Web API', + 'help_message' => 'The Phraseanet Web API allows other web application to rely on this instance' + ]); + $builder->add('navigator-enabled', 'checkbox', [ 'label' => 'Authorize *Phraseanet Navigator*', 'help_message' => '*Phraseanet Navigator* is a smartphone application that allow user to connect on this instance', diff --git a/lib/conf.d/configuration.yml b/lib/conf.d/configuration.yml index ce07ab3d18..4c49e6ded6 100644 --- a/lib/conf.d/configuration.yml +++ b/lib/conf.d/configuration.yml @@ -6,7 +6,6 @@ main: maintenance: false key: '' api_require_ssl: true - api_disabled: true database: host: 'sql-host' port: 3306 diff --git a/resources/ansible/roles/app/tasks/main.yml b/resources/ansible/roles/app/tasks/main.yml index 9c0d497bd6..d7fe461a52 100644 --- a/resources/ansible/roles/app/tasks/main.yml +++ b/resources/ansible/roles/app/tasks/main.yml @@ -48,7 +48,7 @@ chdir: /vagrant/ - name: Enable API routes - shell: bin/setup system:config set main.api_disabled false + shell: bin/setup system:config set registry.api-clients.api-enable true args: chdir: /vagrant/ diff --git a/resources/vagrant/vms/phraseanet-php55-nginx/puphpet/.gitattributes b/resources/vagrant/vms/phraseanet-php55-nginx/puphpet/.gitattributes deleted file mode 100644 index 93f9975f88..0000000000 --- a/resources/vagrant/vms/phraseanet-php55-nginx/puphpet/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -# Autodetect text files -* text=auto - -# Force the following filetypes to have unix eols, so Windows does not break them -*.pp text eol=lf -*.sh text eol=lf -*.yaml text eol=lf -Puppetfile text eol=lf -.bash_aliases text eol=lf -.vimrc text eol=lf diff --git a/templates/web/admin/setup.html.twig b/templates/web/admin/setup.html.twig index e6f2261e19..a3b5d671ca 100644 --- a/templates/web/admin/setup.html.twig +++ b/templates/web/admin/setup.html.twig @@ -4,7 +4,7 @@