diff --git a/config/configuration.sample.yml b/config/configuration.sample.yml index 17e8729509..19bd3242d2 100644 --- a/config/configuration.sample.yml +++ b/config/configuration.sample.yml @@ -6,7 +6,6 @@ main: maintenance: false languages: [] key: '' - api_disable: true api_require_ssl: true database: host: 127.0.0.1 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 17a78e6ded..d22c385d88 100644 --- a/lib/Alchemy/Phrasea/ControllerProvider/Api/OAuth2.php +++ b/lib/Alchemy/Phrasea/ControllerProvider/Api/OAuth2.php @@ -19,7 +19,7 @@ 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) { @@ -35,10 +35,7 @@ class OAuth2 implements ControllerProviderInterface, ServiceProviderInterface public function connect(Application $app) { - /** @var PropertyAccess $config */ - $config = $app['conf']; - - if ($config->get([ 'main', 'api_disable' ], false) == true) { + if (! $this->isApiEnabled($app)) { return $app['controllers_factory']; } diff --git a/lib/Alchemy/Phrasea/ControllerProvider/Api/V1.php b/lib/Alchemy/Phrasea/ControllerProvider/Api/V1.php index 917d9ee0df..bd2731a0a4 100644 --- a/lib/Alchemy/Phrasea/ControllerProvider/Api/V1.php +++ b/lib/Alchemy/Phrasea/ControllerProvider/Api/V1.php @@ -21,7 +21,7 @@ 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'; @@ -47,10 +47,7 @@ class V1 implements ControllerProviderInterface, ServiceProviderInterface public function connect(Application $app) { - /** @var PropertyAccess $config */ - $config = $app['conf']; - - if ($config->get([ 'main', 'api_disable' ], false) == true) { + if (! $this->isApiEnabled($app)) { return $app['controllers_factory']; } diff --git a/lib/Alchemy/Phrasea/ControllerProvider/Api/V2.php b/lib/Alchemy/Phrasea/ControllerProvider/Api/V2.php index 9d5e803646..53eee150b5 100644 --- a/lib/Alchemy/Phrasea/ControllerProvider/Api/V2.php +++ b/lib/Alchemy/Phrasea/ControllerProvider/Api/V2.php @@ -23,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; @@ -71,10 +71,7 @@ class V2 implements ControllerProviderInterface, ServiceProviderInterface public function connect(Application $app) { - /** @var PropertyAccess $config */ - $config = $app['conf']; - - if ($config->get([ 'main', 'api_disable' ], false) == true) { + if (! $this->isApiEnabled($app)) { return $app['controllers_factory']; } 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 fb6b300c28..27eb933247 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_disable: 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 9be09a9412..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_disable 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