Move setting to registry and form type

This commit is contained in:
Thibaud Fabre
2016-09-28 20:58:26 +02:00
parent 7cf5d28a99
commit f62c22bc5c
11 changed files with 53 additions and 29 deletions

View File

@@ -6,7 +6,6 @@ main:
maintenance: false maintenance: false
languages: [] languages: []
key: '' key: ''
api_disable: true
api_require_ssl: true api_require_ssl: true
database: database:
host: 127.0.0.1 host: 127.0.0.1

View File

@@ -11,6 +11,8 @@
namespace Alchemy\Phrasea\Controller\Admin; namespace Alchemy\Phrasea\Controller\Admin;
use Alchemy\Phrasea\Controller\Controller; use Alchemy\Phrasea\Controller\Controller;
use Alchemy\Phrasea\Core\Configuration\Configuration;
use Alchemy\Phrasea\Core\Configuration\PropertyAccess;
use Alchemy\Phrasea\Core\Configuration\RegistryManipulator; use Alchemy\Phrasea\Core\Configuration\RegistryManipulator;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
@@ -20,12 +22,15 @@ class SetupController extends Controller
{ {
/** @var RegistryManipulator $manipulator */ /** @var RegistryManipulator $manipulator */
$manipulator = $this->app['registry.manipulator']; $manipulator = $this->app['registry.manipulator'];
/** @var PropertyAccess $config */
$config = $this->app['conf'];
$form = $manipulator->createForm($this->app['conf']); $form = $manipulator->createForm($this->app['conf']);
if ('POST' === $request->getMethod()) { if ('POST' === $request->getMethod()) {
$form->submit($request->request->all()); $form->submit($request->request->all());
if ($form->isValid()) { if ($form->isValid()) {
$this->app['conf']->set('registry', $manipulator->getRegistryData($form)); $config->set('registry', $manipulator->getRegistryData($form));
return $this->app->redirectPath('setup_display_globals'); return $this->app->redirectPath('setup_display_globals');
} }

View File

@@ -0,0 +1,18 @@
<?php
namespace Alchemy\Phrasea\ControllerProvider\Api;
use Alchemy\Phrasea\Core\Configuration\PropertyAccess;
use Silex\Application;
abstract class Api
{
protected function isApiEnabled(Application $application)
{
/** @var PropertyAccess $config */
$config = $application['conf'];
return $config->get([ 'registry', 'api-clients', 'api-enabled' ], true) == true;
}
}

View File

@@ -19,7 +19,7 @@ use Silex\ControllerCollection;
use Silex\ControllerProviderInterface; use Silex\ControllerProviderInterface;
use Silex\ServiceProviderInterface; use Silex\ServiceProviderInterface;
class OAuth2 implements ControllerProviderInterface, ServiceProviderInterface class OAuth2 extends Api implements ControllerProviderInterface, ServiceProviderInterface
{ {
public function register(Application $app) public function register(Application $app)
{ {
@@ -35,10 +35,7 @@ class OAuth2 implements ControllerProviderInterface, ServiceProviderInterface
public function connect(Application $app) public function connect(Application $app)
{ {
/** @var PropertyAccess $config */ if (! $this->isApiEnabled($app)) {
$config = $app['conf'];
if ($config->get([ 'main', 'api_disable' ], false) == true) {
return $app['controllers_factory']; return $app['controllers_factory'];
} }

View File

@@ -21,7 +21,7 @@ use Silex\ControllerCollection;
use Silex\ControllerProviderInterface; use Silex\ControllerProviderInterface;
use Silex\ServiceProviderInterface; use Silex\ServiceProviderInterface;
class V1 implements ControllerProviderInterface, ServiceProviderInterface class V1 extends Api implements ControllerProviderInterface, ServiceProviderInterface
{ {
const VERSION = '1.5.0'; const VERSION = '1.5.0';
@@ -47,10 +47,7 @@ class V1 implements ControllerProviderInterface, ServiceProviderInterface
public function connect(Application $app) public function connect(Application $app)
{ {
/** @var PropertyAccess $config */ if (! $this->isApiEnabled($app)) {
$config = $app['conf'];
if ($config->get([ 'main', 'api_disable' ], false) == true) {
return $app['controllers_factory']; return $app['controllers_factory'];
} }

View File

@@ -23,7 +23,7 @@ use Silex\Controller;
use Silex\ControllerProviderInterface; use Silex\ControllerProviderInterface;
use Silex\ServiceProviderInterface; use Silex\ServiceProviderInterface;
class V2 implements ControllerProviderInterface, ServiceProviderInterface class V2 extends Api implements ControllerProviderInterface, ServiceProviderInterface
{ {
use ControllerProviderTrait; use ControllerProviderTrait;
@@ -71,10 +71,7 @@ class V2 implements ControllerProviderInterface, ServiceProviderInterface
public function connect(Application $app) public function connect(Application $app)
{ {
/** @var PropertyAccess $config */ if (! $this->isApiEnabled($app)) {
$config = $app['conf'];
if ($config->get([ 'main', 'api_disable' ], false) == true) {
return $app['controllers_factory']; return $app['controllers_factory'];
} }

View File

@@ -19,10 +19,26 @@ use Symfony\Component\Translation\TranslatorInterface;
class RegistryManipulator class RegistryManipulator
{ {
/**
* @var FormFactoryInterface
*/
private $factory; private $factory;
/**
* @var array
*/
private $languages; private $languages;
/**
* @var TranslatorInterface
*/
private $translator; private $translator;
/**
* @param FormFactoryInterface $factory
* @param TranslatorInterface $translator
* @param array $languages
*/
public function __construct(FormFactoryInterface $factory, TranslatorInterface $translator, array $languages) public function __construct(FormFactoryInterface $factory, TranslatorInterface $translator, array $languages)
{ {
$this->factory = $factory; $this->factory = $factory;
@@ -128,6 +144,7 @@ class RegistryManipulator
'enabled' => false, 'enabled' => false,
], ],
'api-clients' => [ 'api-clients' => [
'api-enabled' => true,
'navigator-enabled' => true, 'navigator-enabled' => true,
'office-enabled' => true, 'office-enabled' => true,
], ],

View File

@@ -18,6 +18,11 @@ class APIClientsFormType extends AbstractType
{ {
public function buildForm(FormBuilderInterface $builder, array $options) 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', [ $builder->add('navigator-enabled', 'checkbox', [
'label' => 'Authorize *Phraseanet Navigator*', 'label' => 'Authorize *Phraseanet Navigator*',
'help_message' => '*Phraseanet Navigator* is a smartphone application that allow user to connect on this instance', 'help_message' => '*Phraseanet Navigator* is a smartphone application that allow user to connect on this instance',

View File

@@ -6,7 +6,6 @@ main:
maintenance: false maintenance: false
key: '' key: ''
api_require_ssl: true api_require_ssl: true
api_disable: true
database: database:
host: 'sql-host' host: 'sql-host'
port: 3306 port: 3306

View File

@@ -48,7 +48,7 @@
chdir: /vagrant/ chdir: /vagrant/
- name: Enable API routes - 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: args:
chdir: /vagrant/ chdir: /vagrant/

View File

@@ -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