Merge pull request #1964 from alchemy-fr/4.0

Merge 4.0 into master
This commit is contained in:
Thibaud Fabre
2016-09-29 09:32:30 +02:00
committed by GitHub
13 changed files with 67 additions and 18 deletions

View File

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

View File

@@ -7,7 +7,6 @@ main:
languages: []
key: ''
api_require_ssl: true
api_disabled: true
database:
host: 127.0.0.1
port: 3306

View File

@@ -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');
}

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

@@ -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'];

View File

@@ -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'];

View File

@@ -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());

View File

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

View File

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

View File

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

View File

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

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

View File

@@ -4,7 +4,7 @@
<form class="form-horizontal" id="GV_form_head">
<div class="control-group">
<label class="control-label">Adresse : </label>
<label class="control-label">Adress : </label>
<div class="controls">
<input type="text" class="input-xxlarge" readonly="readonly" value="{{ app['conf'].get('servername') }}" />
</div>