mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-11 20:13:28 +00:00
Fix AccountForm validation & Add repeated form
This commit is contained in:
@@ -93,18 +93,13 @@ class Account implements ControllerProviderInterface
|
|||||||
$data = $form->getData();
|
$data = $form->getData();
|
||||||
|
|
||||||
$password = $data['password'];
|
$password = $data['password'];
|
||||||
$passwordConfirm = $data['passwordConfirm'];
|
|
||||||
|
|
||||||
$user = $app['authentication']->getUser();
|
$user = $app['authentication']->getUser();
|
||||||
|
|
||||||
if ($password !== $passwordConfirm) {
|
if (trim($password) != str_replace(array("\r\n", "\n", "\r", "\t", " "), "_", $password)) {
|
||||||
$app->addFlash('error', _('forms::les mots de passe ne correspondent pas'));
|
|
||||||
} elseif (strlen(trim($password)) < 5) {
|
|
||||||
$app->addFlash('error', _('forms::la valeur donnee est trop courte'));
|
|
||||||
} elseif (trim($password) != str_replace(array("\r\n", "\n", "\r", "\t", " "), "_", $password)) {
|
|
||||||
$app->addFlash('error', _('forms::la valeur donnee contient des caracteres invalides'));
|
$app->addFlash('error', _('forms::la valeur donnee contient des caracteres invalides'));
|
||||||
} elseif ($app['auth.password-encoder']->isPasswordValid($user->get_password(), $data['oldPassword'], $user->get_nonce())) {
|
} elseif ($app['auth.password-encoder']->isPasswordValid($user->get_password(), $data['oldPassword'], $user->get_nonce())) {
|
||||||
$user->set_password($passwordConfirm);
|
$user->set_password($password);
|
||||||
$app->addFlash('success', _('login::notification: Mise a jour du mot de passe avec succes'));
|
$app->addFlash('success', _('login::notification: Mise a jour du mot de passe avec succes'));
|
||||||
|
|
||||||
return $app->redirectPath('account');
|
return $app->redirectPath('account');
|
||||||
|
@@ -20,13 +20,10 @@
|
|||||||
<div class="span12">
|
<div class="span12">
|
||||||
{{ account_macro.flashes() }}
|
{{ account_macro.flashes() }}
|
||||||
<form
|
<form
|
||||||
ng-controller="passwordChangeFormCtrl"
|
|
||||||
novalidate
|
novalidate
|
||||||
name="passwordChangeForm"
|
name="passwordChangeForm"
|
||||||
ng-submit="submit();"
|
|
||||||
method="POST"
|
method="POST"
|
||||||
action="{{ path('reset_password') }}"
|
action="{{ path('reset_password') }}"
|
||||||
check-form-submission
|
|
||||||
>
|
>
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="span12">
|
<div class="span12">
|
||||||
@@ -38,22 +35,9 @@
|
|||||||
{{ auth_macro.fieldInput(form.oldPassword, "passwordChangeForm", 'icon-lock') }}
|
{{ auth_macro.fieldInput(form.oldPassword, "passwordChangeForm", 'icon-lock') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row-fluid">
|
|
||||||
<div class="span12">
|
{{ auth_macro.repeatedInput(form.password, "passwordChangeForm", 'icon-lock') }}
|
||||||
{{ auth_macro.fieldInput(form.password, "passwordChangeForm", 'icon-lock') }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row-fluid">
|
|
||||||
<div class="span12">
|
|
||||||
{{ auth_macro.fieldInput(form.passwordConfirm, "passwordChangeForm", 'icon-lock', {
|
|
||||||
"ui-validate" : " '$value==" ~ form.password.vars.name ~ "' ",
|
|
||||||
"ui-validate-watch" : "'" ~ form.password.vars.name ~ "'"
|
|
||||||
}, {
|
|
||||||
"validate_message" : "Passwords do not match"|trans
|
|
||||||
})
|
|
||||||
}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{ form_rest(form) }}
|
{{ form_rest(form) }}
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="span12">
|
<div class="span12">
|
||||||
@@ -67,3 +51,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block scripts %}
|
||||||
|
{{ parent() }}
|
||||||
|
<script type="text/javascript" src="/scripts/apps/login/home/renewPassword.js"></script>
|
||||||
|
{% endblock %}
|
||||||
|
@@ -50,5 +50,5 @@
|
|||||||
|
|
||||||
{% block scripts %}
|
{% block scripts %}
|
||||||
{{ parent() }}
|
{{ parent() }}
|
||||||
<script type="text/javascript" src="/scripts/apps/login/home/renewPassword.js"></script>
|
<script type="text/javascript" src="/scripts/apps/login/home/recoverPassword.js"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -398,8 +398,10 @@ class AccountTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
|
|||||||
self::$DI['app']['authentication']->getUser()->set_password($oldPassword);
|
self::$DI['app']['authentication']->getUser()->set_password($oldPassword);
|
||||||
|
|
||||||
$crawler = self::$DI['client']->request('POST', '/account/reset-password/', array(
|
$crawler = self::$DI['client']->request('POST', '/account/reset-password/', array(
|
||||||
|
'password' => array(
|
||||||
'password' => $password,
|
'password' => $password,
|
||||||
'passwordConfirm' => $passwordConfirm,
|
'confirm' => $passwordConfirm
|
||||||
|
),
|
||||||
'oldPassword' => $oldPassword,
|
'oldPassword' => $oldPassword,
|
||||||
'_token' => 'token',
|
'_token' => 'token',
|
||||||
));
|
));
|
||||||
@@ -407,14 +409,16 @@ class AccountTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
|
|||||||
$response = self::$DI['client']->getResponse();
|
$response = self::$DI['client']->getResponse();
|
||||||
|
|
||||||
$this->assertFalse($response->isRedirect());
|
$this->assertFalse($response->isRedirect());
|
||||||
$this->assertFlashMessage($crawler, 'error', 1);
|
$this->assertFormOrFlashError($crawler, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testPostRenewPasswordBadOldPassword()
|
public function testPostRenewPasswordBadOldPassword()
|
||||||
{
|
{
|
||||||
$crawler = self::$DI['client']->request('POST', '/account/reset-password/', array(
|
$crawler = self::$DI['client']->request('POST', '/account/reset-password/', array(
|
||||||
|
'password' => array(
|
||||||
'password' => 'password',
|
'password' => 'password',
|
||||||
'passwordConfirm' => 'password',
|
'confirm' => 'password'
|
||||||
|
),
|
||||||
'oldPassword' => 'oulala',
|
'oldPassword' => 'oulala',
|
||||||
'_token' => 'token',
|
'_token' => 'token',
|
||||||
));
|
));
|
||||||
@@ -431,8 +435,10 @@ class AccountTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
|
|||||||
self::$DI['app']['authentication']->getUser()->set_password($password);
|
self::$DI['app']['authentication']->getUser()->set_password($password);
|
||||||
|
|
||||||
$crawler = self::$DI['client']->request('POST', '/account/reset-password/', array(
|
$crawler = self::$DI['client']->request('POST', '/account/reset-password/', array(
|
||||||
|
'password' => array(
|
||||||
'password' => 'password',
|
'password' => 'password',
|
||||||
'passwordConfirm' => 'password',
|
'confirm' => 'password'
|
||||||
|
),
|
||||||
'oldPassword' => $password,
|
'oldPassword' => $password,
|
||||||
));
|
));
|
||||||
|
|
||||||
@@ -449,8 +455,10 @@ class AccountTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
|
|||||||
self::$DI['app']['authentication']->getUser()->set_password($password);
|
self::$DI['app']['authentication']->getUser()->set_password($password);
|
||||||
|
|
||||||
self::$DI['client']->request('POST', '/account/reset-password/', array(
|
self::$DI['client']->request('POST', '/account/reset-password/', array(
|
||||||
|
'password' => array(
|
||||||
'password' => 'password',
|
'password' => 'password',
|
||||||
'passwordConfirm' => 'password',
|
'confirm' => 'password'
|
||||||
|
),
|
||||||
'oldPassword' => $password,
|
'oldPassword' => $password,
|
||||||
'_token' => 'token',
|
'_token' => 'token',
|
||||||
));
|
));
|
||||||
|
42
www/scripts/apps/login/home/recoverPassword.js
Normal file
42
www/scripts/apps/login/home/recoverPassword.js
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of Phraseanet
|
||||||
|
*
|
||||||
|
* (c) 2005-2013 Alchemy
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
require([
|
||||||
|
"jquery",
|
||||||
|
"i18n",
|
||||||
|
"apps/login/home/common",
|
||||||
|
"apps/login/home/views/form"
|
||||||
|
], function($, i18n, Common, RenewPassword) {
|
||||||
|
i18n.init({
|
||||||
|
resGetPath: Common.languagePath,
|
||||||
|
useLocalStorage: true
|
||||||
|
}, function() {
|
||||||
|
Common.initialize();
|
||||||
|
|
||||||
|
new RenewPassword({
|
||||||
|
el : $("form[name=passwordRenewForm]"),
|
||||||
|
rules: [{
|
||||||
|
name: "password[password]",
|
||||||
|
rules: "required",
|
||||||
|
message: i18n.t("validation_blank")
|
||||||
|
},{
|
||||||
|
name: "password[password]",
|
||||||
|
rules: "min_length[5]",
|
||||||
|
message: i18n.t("validation_length_min", {
|
||||||
|
postProcess: "sprintf",
|
||||||
|
sprintf: ["5"]
|
||||||
|
})
|
||||||
|
},{
|
||||||
|
name: "password[confirm]",
|
||||||
|
rules: "matches[password[password]]",
|
||||||
|
message: i18n.t("password_match")
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@@ -20,7 +20,7 @@ require([
|
|||||||
Common.initialize();
|
Common.initialize();
|
||||||
|
|
||||||
new RenewPassword({
|
new RenewPassword({
|
||||||
el : $("form[name=passwordRenewForm]"),
|
el : $("form[name=passwordChangeForm]"),
|
||||||
rules: [{
|
rules: [{
|
||||||
name: "oldPassword",
|
name: "oldPassword",
|
||||||
rules: "required",
|
rules: "required",
|
||||||
|
Reference in New Issue
Block a user