mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-23 18:03:17 +00:00
Merge branch '3.8'
Conflicts: lib/Alchemy/Phrasea/Security/Firewall.php
This commit is contained in:
@@ -102,7 +102,9 @@ class Login implements ControllerProviderInterface
|
||||
// Displays the homepage
|
||||
$controllers->get('/', 'login.controller:login')
|
||||
->before(function (Request $request) use ($app) {
|
||||
$app['firewall']->requireNotAuthenticated();
|
||||
if (null !== $response = $app['firewall']->requireNotAuthenticated()) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
if (null !== $request->query->get('postlog')) {
|
||||
|
||||
@@ -127,14 +129,18 @@ class Login implements ControllerProviderInterface
|
||||
// Authentication end point
|
||||
$controllers->post('/authenticate/', 'login.controller:authenticate')
|
||||
->before(function (Request $request) use ($app) {
|
||||
$app['firewall']->requireNotAuthenticated();
|
||||
if (null !== $response = $app['firewall']->requireNotAuthenticated()) {
|
||||
return $response;
|
||||
}
|
||||
})
|
||||
->bind('login_authenticate');
|
||||
|
||||
// Guest access end point
|
||||
$controllers->match('/authenticate/guest/', 'login.controller:authenticateAsGuest')
|
||||
->before(function (Request $request) use ($app) {
|
||||
$app['firewall']->requireNotAuthenticated();
|
||||
if (null !== $response = $app['firewall']->requireNotAuthenticated()) {
|
||||
return $response;
|
||||
}
|
||||
})
|
||||
->bind('login_authenticate_as_guest')
|
||||
->method('GET|POST');
|
||||
@@ -142,14 +148,18 @@ class Login implements ControllerProviderInterface
|
||||
// Authenticate with an AuthProvider
|
||||
$controllers->get('/provider/{providerId}/authenticate/', 'login.controller:authenticateWithProvider')
|
||||
->before(function (Request $request) use ($app) {
|
||||
$app['firewall']->requireNotAuthenticated();
|
||||
if (null !== $response = $app['firewall']->requireNotAuthenticated()) {
|
||||
return $response;
|
||||
}
|
||||
})
|
||||
->bind('login_authentication_provider_authenticate');
|
||||
|
||||
// AuthProviders callbacks
|
||||
$controllers->get('/provider/{providerId}/callback/', 'login.controller:authenticationCallback')
|
||||
->before(function (Request $request) use ($app) {
|
||||
$app['firewall']->requireNotAuthenticated();
|
||||
if (null !== $response = $app['firewall']->requireNotAuthenticated()) {
|
||||
return $response;
|
||||
}
|
||||
})->bind('login_authentication_provider_callback');
|
||||
|
||||
// Logout end point
|
||||
@@ -161,13 +171,17 @@ class Login implements ControllerProviderInterface
|
||||
// Registration end point ; redirects to classic registration or AuthProvider registration
|
||||
$controllers->get('/register/', 'login.controller:displayRegisterForm')
|
||||
->before(function (Request $request) use ($app) {
|
||||
$app['firewall']->requireNotAuthenticated();
|
||||
if (null !== $response = $app['firewall']->requireNotAuthenticated()) {
|
||||
return $response;
|
||||
}
|
||||
})->bind('login_register');
|
||||
|
||||
// Classic registration end point
|
||||
$controllers->match('/register-classic/', 'login.controller:doRegistration')
|
||||
->before(function (Request $request) use ($app) {
|
||||
$app['firewall']->requireNotAuthenticated();
|
||||
if (null !== $response = $app['firewall']->requireNotAuthenticated()) {
|
||||
return $response;
|
||||
}
|
||||
})
|
||||
->bind('login_register_classic');
|
||||
|
||||
@@ -179,25 +193,33 @@ class Login implements ControllerProviderInterface
|
||||
// Unlocks an email address that is currently locked
|
||||
$controllers->get('/register-confirm/', 'login.controller:registerConfirm')
|
||||
->before(function (Request $request) use ($app) {
|
||||
$app['firewall']->requireNotAuthenticated();
|
||||
if (null !== $response = $app['firewall']->requireNotAuthenticated()) {
|
||||
return $response;
|
||||
}
|
||||
})->bind('login_register_confirm');
|
||||
|
||||
// Displays a form to send an account unlock email again
|
||||
$controllers->get('/send-mail-confirm/', 'login.controller:sendConfirmMail')
|
||||
->before(function (Request $request) use ($app) {
|
||||
$app['firewall']->requireNotAuthenticated();
|
||||
if (null !== $response = $app['firewall']->requireNotAuthenticated()) {
|
||||
return $response;
|
||||
}
|
||||
})->bind('login_send_mail');
|
||||
|
||||
// Forgot password end point
|
||||
$controllers->match('/forgot-password/', 'login.controller:forgotPassword')
|
||||
->before(function (Request $request) use ($app) {
|
||||
$app['firewall']->requireNotAuthenticated();
|
||||
if (null !== $response = $app['firewall']->requireNotAuthenticated()) {
|
||||
return $response;
|
||||
}
|
||||
})->bind('login_forgot_password');
|
||||
|
||||
// Renew password end point
|
||||
$controllers->match('/renew-password/', 'login.controller:renewPassword')
|
||||
->before(function (Request $request) use ($app) {
|
||||
$app['firewall']->requireNotAuthenticated();
|
||||
if (null !== $response = $app['firewall']->requireNotAuthenticated()) {
|
||||
return $response;
|
||||
}
|
||||
})->bind('login_renew_password');
|
||||
|
||||
// Displays Terms of use
|
||||
|
@@ -12,6 +12,7 @@
|
||||
namespace Alchemy\Phrasea\Security;
|
||||
|
||||
use Silex\Application;
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
|
||||
class Firewall
|
||||
{
|
||||
@@ -135,12 +136,8 @@ class Firewall
|
||||
public function requireNotAuthenticated()
|
||||
{
|
||||
if ($this->app['authentication']->isAuthenticated()) {
|
||||
$this->app->abort(302, 'You are authenticated', [
|
||||
'X-Phraseanet-Redirect' => $this->app->path('prod')
|
||||
]);
|
||||
return new RedirectResponse($this->app->path('prod'));
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function requireOrdersAdmin()
|
||||
|
@@ -431,7 +431,7 @@ class collection implements cache_cacheableInterface
|
||||
$coll_id = phrasea::collFromBas($app, $base_id);
|
||||
$sbas_id = phrasea::sbasFromBas($app, $base_id);
|
||||
if (! $sbas_id || ! $coll_id) {
|
||||
throw new Exception_Databox_CollectionNotFound(sprintf("Collection could not be found"));
|
||||
throw new Exception_Databox_CollectionNotFound(sprintf("Collection with base_id %s could not be found", $base_id));
|
||||
}
|
||||
$databox = $app['phraseanet.appbox']->get_databox($sbas_id);
|
||||
|
||||
|
@@ -3,12 +3,12 @@
|
||||
{% extends 'prod/Tooltip/Tooltip.html.twig' %}
|
||||
|
||||
{% set title %} {{ basket.getName() }} {% endset %}
|
||||
{% set width = 300 %}
|
||||
{% set width = 500 %}
|
||||
{% set maxwidth = null %}
|
||||
|
||||
{% block content %}
|
||||
<div class="noToolTipResize" style="margin:5px;width:{{ width - 40 }}px;height:300px;position:relative;">
|
||||
<div style="margin:5px 0">
|
||||
<div class="noToolTipResize" style="margin:5px;width:{{ width - 40 }}px;height:auto !important;height:380px;max-height:380px;min-height:220px;position:relative;">
|
||||
<div style="margin:5px 0;max-height:160px;overflow:hidden;text-overflow:ellipsis;">
|
||||
{{ basket.getDescription()|nl2br }}
|
||||
</div>
|
||||
<div style="margin:5px 0;text-align:right;font-style:italic;position:relative;">
|
||||
@@ -17,9 +17,9 @@
|
||||
{% trans with {'%nb_records%' : nb_records} %}%nb_records% records{% endtrans %}
|
||||
- {{ date }}
|
||||
<hr/>
|
||||
<div style="position:relative;float:left;width:270px;">
|
||||
<div style="position:relative;float:left;width:470px;">
|
||||
{% for element in basket.getElements() %}
|
||||
{% if loop.index <= 9 %}
|
||||
{% if loop.index <= 10 %}
|
||||
<div style="margin:5px;position:relative;float:left;width:80px;height:80px;overflow:hidden;">
|
||||
{{ thumbnail.format(element.getRecord(app).get_thumbnail(), 80, 80 , '', false, false) }}
|
||||
</div>
|
||||
|
@@ -76,6 +76,15 @@ class RemovePluginTest extends PluginCommandTestCase
|
||||
$command = new RemovePlugin();
|
||||
$command->setContainer(self::$DI['cli']);
|
||||
|
||||
self::$DI['cli']['plugins.manager'] = $this->getMockBuilder('Alchemy\Phrasea\Plugin\PluginManager')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
self::$DI['cli']['plugins.manager']->expects($this->once())
|
||||
->method('hasPlugin')
|
||||
->with('test-plugin')
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$data = $this->addPluginData();
|
||||
|
||||
self::$DI['cli']['filesystem'] = $this->createFilesystemMock();
|
||||
|
@@ -190,8 +190,8 @@
|
||||
|
||||
// Sprite icons path
|
||||
// -------------------------
|
||||
@iconSpritePath: "../img/glyphicons-halflings.png";
|
||||
@iconWhiteSpritePath: "../img/glyphicons-halflings-white.png";
|
||||
@iconSpritePath: "/skins/build/bootstrap/img/glyphicons-halflings.png";
|
||||
@iconWhiteSpritePath: "/skins/build/bootstrap/img/glyphicons-halflings-white.png";
|
||||
|
||||
|
||||
// Input placeholder text color
|
||||
|
@@ -194,8 +194,8 @@
|
||||
|
||||
// Sprite icons path
|
||||
// -------------------------
|
||||
@iconSpritePath: "../img/glyphicons-halflings.png";
|
||||
@iconWhiteSpritePath: "../img/glyphicons-halflings-white.png";
|
||||
@iconSpritePath: "/skins/build/bootstrap/img/glyphicons-halflings.png";
|
||||
@iconWhiteSpritePath: "/skins/build/bootstrap/img/glyphicons-halflings-white.png";
|
||||
|
||||
|
||||
// Input placeholder text color
|
||||
|
Reference in New Issue
Block a user