Merge pull request #2186 from wallabag/addRegistration

Add option to disable registration
This commit is contained in:
Jeremy Benoist 2016-08-24 11:13:00 +02:00 committed by GitHub
commit a1ab7d1d32
9 changed files with 71 additions and 2 deletions

View file

@ -50,6 +50,9 @@ wallabag_core:
rss_limit: 50
reading_speed: 1
wallabag_user:
registration_enabled: "%fosuser_registration%"
wallabag_import:
allow_mimetypes: ['application/octet-stream', 'application/json', 'text/plain']
resource_dir: "%kernel.root_dir%/../web/uploads/import"

View file

@ -34,6 +34,7 @@ parameters:
twofactor_sender: no-reply@wallabag.org
# fosuser stuff
fosuser_registration: true
fosuser_confirmation: true
from_email: no-reply@wallabag.org

View file

@ -0,0 +1,18 @@
<?php
namespace Wallabag\UserBundle\Controller;
use FOS\UserBundle\Controller\RegistrationController as FOSRegistrationController;
use Symfony\Component\HttpFoundation\Request;
class RegistrationController extends FOSRegistrationController
{
public function registerAction(Request $request)
{
if ($this->container->getParameter('wallabag_user.registration_enabled')) {
return parent::registerAction($request);
}
return $this->redirectToRoute('fos_user_security_login', [], 301);
}
}

View file

@ -0,0 +1,21 @@
<?php
namespace Wallabag\UserBundle\Controller;
use FOS\UserBundle\Controller\SecurityController as FOSSecurityController;
/**
* Extends login form in order to pass the registration_enabled parameter.
*/
class SecurityController extends FOSSecurityController
{
protected function renderLogin(array $data)
{
return $this->render('FOSUserBundle:Security:login.html.twig',
array_merge(
$data,
['registration_enabled' => $this->container->getParameter('wallabag_user.registration_enabled')]
)
);
}
}

View file

@ -12,6 +12,14 @@ class Configuration implements ConfigurationInterface
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('wallabag_user');
$rootNode
->children()
->booleanNode('registration_enabled')
->defaultValue(true)
->end()
->end()
;
return $treeBuilder;
}
}

View file

@ -16,6 +16,7 @@ class WallabagUserExtension extends Extension
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
$container->setParameter('wallabag_user.registration_enabled', $config['registration_enabled']);
}
public function getAlias()

View file

@ -33,7 +33,9 @@
</div>
<div class="card-action center">
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}" />
<a href="{{ path('fos_user_registration_register') }}" class="waves-effect waves-light grey btn">{{ 'security.login.register'|trans }}</a>
{% if registration_enabled %}
<a href="{{ path('fos_user_registration_register') }}" class="waves-effect waves-light grey btn">{{ 'security.login.register'|trans }}</a>
{% endif %}
<button class="btn waves-effect waves-light" type="submit" name="send">
{{ 'security.login.submit'|trans }}
<i class="material-icons right">send</i>

View file

@ -33,7 +33,7 @@ class InstallCommandTest extends WallabagCoreTestCase
}
/**
* Ensure next tests will have a clean database
* Ensure next tests will have a clean database.
*/
public static function tearDownAfterClass()
{

View file

@ -69,4 +69,19 @@ class SecurityControllerTest extends WallabagCoreTestCase
$this->assertTrue($user->isTrustedComputer('ABCDEF'));
$this->assertFalse($user->isTrustedComputer('FEDCBA'));
}
public function testEnabledRegistration()
{
$client = $this->getClient();
if (!$client->getContainer()->getParameter('fosuser_registration')) {
$this->markTestSkipped('fosuser_registration is not enabled.');
return;
}
$client->followRedirects();
$crawler = $client->request('GET', '/register');
$this->assertContains('registration.submit', $crawler->filter('body')->extract(['_text'])[0]);
}
}