Commit fb8ec238 authored by Christophe Maudoux's avatar Christophe Maudoux

Merge branch 'v2.0'

parents 7e9aaea6 6dee2f2d
......@@ -86,7 +86,7 @@
"authentication" : "Demo",
"cfgAuthor" : "The LemonLDAP::NG team",
"cfgNum" : 1,
"cfgVersion" : "2.0.2",
"cfgVersion" : "2.0.1",
"cookieName" : "lemonldap",
"demoExportedVars" : {
"cn" : "cn",
......
......@@ -121,9 +121,9 @@ sub defaultValues {
'macros' => {},
'mailCharset' => 'utf-8',
'mailFrom' => 'noreply@example.com',
'mailPwdRstUrl' => 'http://auth.example.com/resetpwd',
'mailSessionKey' => 'mail',
'mailTimeout' => 0,
'mailUrl' => 'http://auth.example.com/resetpwd',
'managerDn' => '',
'managerPassword' => '',
'max2FDevices' => 10,
......
......@@ -16,10 +16,8 @@ BEGIN { use_ok('Lemonldap::NG::Common::Conf') }
my $h;
ok(
$h = new Lemonldap::NG::Common::Conf(
{
type => 'File',
ok( $h = new Lemonldap::NG::Common::Conf(
{ type => 'File',
dirName => "t/",
}
),
......@@ -39,7 +37,7 @@ my @test = (
{ cfgNum => 1, test => 'éà' }
);
for ( my $i = 0 ; $i < @test ; $i++ ) {
for ( my $i = 0; $i < @test; $i++ ) {
ok( $h->store( $test[$i] ) == 1, "Test $i is stored" )
or print STDERR "$Lemonldap::NG::Common::Conf::msg $!";
$count++;
......@@ -48,7 +46,9 @@ for ( my $i = 0 ; $i < @test ; $i++ ) {
open F, 'file t/lmConf-1.json |';
$_ = join( '', <F> );
close F;
ok( /(ascii|utf-?8)/si, "File is $1 encoded" )
## Debian Buster 'file' command returns JSON DATA
ok( /(ascii|utf-?8|json\sdata)/si, "File is $1 encoded" )
or print STDERR "Result: $_\n";
$count++;
};
......
......@@ -243,14 +243,6 @@ sub sfa {
$self->logger->debug(
"Removing sessions unless a $_ device is registered");
}
#else {
# (
# return $self->sendError(
# $req, "Bad or Missing " . $_ . "Check parameter", 400
# )
# );
#}
}
my $total = ( keys %$res );
......
......@@ -1558,19 +1558,10 @@ qr/^(?:\*\.)?(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][
},
'type' => 'keyTextContainer'
},
'mailBody' => {
'type' => 'longtext'
},
'mailCharset' => {
'default' => 'utf-8',
'type' => 'text'
},
'mailConfirmBody' => {
'type' => 'longtext'
},
'mailConfirmSubject' => {
'type' => 'text'
},
'mailFrom' => {
'default' => 'noreply@example.com',
'type' => 'text'
......@@ -1582,6 +1573,22 @@ qr/^(?:\*\.)?(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][
'default' => 0,
'type' => 'bool'
},
'mailPwdRstBody' => {
'type' => 'longtext'
},
'mailPwdRstConfirmBody' => {
'type' => 'longtext'
},
'mailPwdRstConfirmSubject' => {
'type' => 'text'
},
'mailPwdRstSubject' => {
'type' => 'text'
},
'mailPwdRstUrl' => {
'default' => 'http://auth.example.com/resetpwd',
'type' => 'url'
},
'mailReplyTo' => {
'type' => 'text'
},
......@@ -1589,17 +1596,10 @@ qr/^(?:\*\.)?(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][
'default' => 'mail',
'type' => 'text'
},
'mailSubject' => {
'type' => 'text'
},
'mailTimeout' => {
'default' => 0,
'type' => 'int'
},
'mailUrl' => {
'default' => 'http://auth.example.com/resetpwd',
'type' => 'url'
},
'maintenance' => {
'default' => 0,
'type' => 'bool'
......
......@@ -17,7 +17,7 @@
package Lemonldap::NG::Manager::Build::Tree;
our $VERSION = '2.0.0';
our $VERSION = '2.0.2';
# TODO: Missing:
# * activeTimer
......@@ -506,11 +506,32 @@ sub tree {
'upgradeSession',
{ title => 'portalServers',
help => 'portalservers.html',
nodes => [
'wsdlServer',
'restSessionServer',
'restConfigServer',
'soapSessionServer',
'soapConfigServer',
'exportedAttr',
{ title => 'SMTP',
nodes => [
'SMTPServer',
'SMTPPort',
'SMTPAuthUser',
'SMTPAuthPass',
'SMTPTLS',
'SMTPTLSOpts',
'mailSessionKey',
{ title => 'mailHeaders',
form => 'simpleInputContainer',
nodes => [
'wsdlServer', 'restSessionServer',
'restConfigServer', 'soapSessionServer',
'soapConfigServer', 'exportedAttr'
'mailFrom',
'mailReplyTo',
'mailCharset'
]
},
]
},
]
},
{ title => 'loginHistory',
......@@ -537,36 +558,22 @@ sub tree {
{ title => 'passwordManagement',
help => 'resetpassword.html',
nodes => [
{ title => 'SMTP',
nodes => [
'SMTPServer', 'SMTPPort',
'SMTPAuthUser', 'SMTPAuthPass',
'SMTPTLS', 'SMTPTLSOpts',
]
},
{ title => 'mailHeaders',
form => 'simpleInputContainer',
nodes => [
'mailFrom', 'mailReplyTo',
'mailCharset'
]
},
{ title => 'mailContent',
{ title => 'mailPwdRstContent',
form => 'simpleInputContainer',
nodes => [
'mailSubject',
'mailBody',
'mailConfirmSubject',
'mailConfirmBody'
'mailPwdRstSubject',
'mailPwdRstBody',
'mailPwdRstConfirmSubject',
'mailPwdRstConfirmBody'
]
},
{ title => 'mailOther',
form => 'simpleInputContainer',
nodes => [
'mailUrl',
'mailPwdRstUrl',
'randomPasswordRegexp',
'mailTimeout',
'mailSessionKey'
]
}
]
......@@ -621,25 +628,32 @@ sub tree {
help => 'u2f.html',
form => 'simpleInputContainer',
nodes => [
'u2fActivation', 'u2fSelfRegistration',
'u2fAuthnLevel', 'u2fUserCanRemoveKey',
'u2fActivation',
'u2fSelfRegistration',
'u2fAuthnLevel',
'u2fUserCanRemoveKey',
]
},
{ title => 'external2f',
help => 'external2f.html',
form => 'simpleInputContainer',
nodes => [
'ext2fActivation', 'ext2FSendCommand',
'ext2FValidateCommand', 'ext2fAuthnLevel',
'ext2fActivation',
'ext2FSendCommand',
'ext2FValidateCommand',
'ext2fAuthnLevel',
'ext2fLogo',
]
},
{ title => 'rest2f',
help => 'rest2f.html',
nodes => [
'rest2fActivation', 'rest2fInitUrl',
'rest2fInitArgs', 'rest2fVerifyUrl',
'rest2fVerifyArgs', 'rest2fAuthnLevel',
'rest2fActivation',
'rest2fInitUrl',
'rest2fInitArgs',
'rest2fVerifyUrl',
'rest2fVerifyArgs',
'rest2fAuthnLevel',
'rest2fLogo',
]
},
......@@ -710,7 +724,8 @@ sub tree {
help => 'redirections.html#portal_redirections',
form => 'simpleInputContainer',
nodes => [
'jsRedirect', 'noAjaxHook',
'jsRedirect',
'noAjaxHook',
'skipRenewConfirmation',
]
},
......@@ -719,8 +734,10 @@ sub tree {
{ title => 'forms',
form => 'simpleInputContainer',
nodes => [
'infoFormMethod', 'confirmFormMethod',
'redirectFormMethod', 'activeTimer',
'infoFormMethod',
'confirmFormMethod',
'redirectFormMethod',
'activeTimer',
]
},
]
......@@ -932,7 +949,9 @@ sub tree {
{ title => 'casServiceMetadata',
nodes => [
'casAttr',
'casAccessControlPolicy', 'casStorage', 'casStorageOptions',
'casAccessControlPolicy',
'casStorage',
'casStorageOptions',
'casAttributes',
]
......
......@@ -20,7 +20,22 @@
</ul>
</div>
</div>
<script type="text/menu">
[{
"title": "up",
"icon": "arrow-up"
},{
"title": "down",
"icon": "arrow-down"
},{
"title": "deleteEntry",
"icon": "minus-sign"
},{
"title": "newApp",
"icon": "plus-sign"
}]
</script>
<!-- Uncomment this snippet to enable sub categories
<script type="text/menu">
[{
"title": "up",
......@@ -39,3 +54,4 @@
"icon": "plus-sign"
}]
</script>
-->
\ No newline at end of file
......@@ -379,11 +379,11 @@
"lwpOpts":"خيارات لطلبات الخادم",
"lwpSslOpts":"خيارات سسل لطلبات الخادم",
"macros":"ماكرو",
"mailBody":"محتوى البريد الناجح",
"mailPwdRstBody":"محتوى البريد الناجح",
"mailCharset":"charset",
"mailConfirmBody":"تأكيد محتوى البريد",
"mailConfirmSubject":"تأكيد عنوان بريد",
"mailContent":"محتوى البريد",
"mailPwdRstConfirmBody":"تأكيد محتوى البريد",
"mailPwdRstConfirmSubject":"تأكيد عنوان بريد",
"mailPwdRstContent":"Password reset mail content",
"mailFrom":"مرسل البريد",
"mailHeaders":"هيدر البريد",
"mailLDAPFilter":"فلتر البريد",
......@@ -391,9 +391,9 @@
"mailOther":"آخر",
"mailReplyTo":"عنوان الجواب",
"mailSessionKey":"مفتاح الجلسة الذي يحتوي على عنوان البريد الإلكتروني",
"mailSubject":"نجاح عنوان البريد",
"mailPwdRstSubject":"نجاح عنوان البريد",
"mailTimeout":"عدم تطابق كلمت المرور",
"mailUrl":"صفحة اليو آر إل",
"mailPwdRstUrl":"Password reset page URL",
"maintenance":"وضع الصيانة",
"malformedValue":"قيمة سيئة التصميم",
"managerDn":"حساب",
......
......@@ -379,11 +379,11 @@
"lwpOpts":"Options for server requests",
"lwpSslOpts":"SSL options for server requests",
"macros":"Macros",
"mailBody":"Success mail content",
"mailPwdRstBody":"Success mail content",
"mailCharset":"Charset",
"mailConfirmBody":"Confirmation mail content",
"mailConfirmSubject":"Confirmation mail subject",
"mailContent":"Mail content",
"mailPwdRstConfirmBody":"Confirmation mail content",
"mailPwdRstConfirmSubject":"Confirmation mail subject",
"mailPwdRstContent":"Password reset mail content",
"mailFrom":"Mail sender",
"mailHeaders":"Mail headers",
"mailLDAPFilter":"Mail filter",
......@@ -391,9 +391,9 @@
"mailOther":"Other",
"mailReplyTo":"Reply address",
"mailSessionKey":"Session key containing mail address",
"mailSubject":"Success mail subject",
"mailPwdRstSubject":"Success mail subject",
"mailTimeout":"Validity time of a password reset request",
"mailUrl":"Page URL",
"mailPwdRstUrl":"Password reset page URL",
"maintenance":"Maintenance mode",
"malformedValue":"Malformed value",
"managerDn":"Account",
......
......@@ -379,11 +379,11 @@
"lwpOpts":"Options for server requests",
"lwpSslOpts":"SSL options for server requests",
"macros":"Macros",
"mailBody":"Success mail content",
"mailPwdRstBody":"Success mail content",
"mailCharset":"Charset",
"mailConfirmBody":"Confirmation mail content",
"mailConfirmSubject":"Confirmation mail subject",
"mailContent":"Mail content",
"mailPwdRstConfirmBody":"Confirmation mail content",
"mailPwdRstConfirmSubject":"Confirmation mail subject",
"mailPwdRstContent":"Password reset mail content",
"mailFrom":"Mail sender",
"mailHeaders":"Mail headers",
"mailLDAPFilter":"Mail filter",
......@@ -391,9 +391,9 @@
"mailOther":"Other",
"mailReplyTo":"Reply address",
"mailSessionKey":"Session key containing mail address",
"mailSubject":"Success mail subject",
"mailPwdRstSubject":"Success mail subject",
"mailTimeout":"Validity time of a password reset request",
"mailUrl":"Page URL",
"mailPwdRstUrl":"Password reset page URL",
"maintenance":"Maintenance mode",
"malformedValue":"Malformed value",
"managerDn":"Account",
......
......@@ -379,11 +379,11 @@
"lwpOpts":"Options pour les requêtes serveur",
"lwpSslOpts":"Options SSL pour les requêtes serveur",
"macros":"Macros",
"mailBody":"Contenu du message de succès",
"mailPwdRstBody":"Contenu du message de succès",
"mailCharset":"Charset",
"mailConfirmBody":"Contenu du message de confirmation",
"mailConfirmSubject":"Sujet du message de confirmation",
"mailContent":"Contenu du mail",
"mailPwdRstConfirmBody":"Contenu du message de confirmation",
"mailPwdRstConfirmSubject":"Sujet du message de confirmation",
"mailPwdRstContent":"Contenu du mail de réinitialisation du mot de passe",
"mailFrom":"Expéditeur du message",
"mailHeaders":"En-têtes du mail",
"mailLDAPFilter":"Filtre mail",
......@@ -391,9 +391,9 @@
"mailOther":"Autres",
"mailReplyTo":"Adresse de réponse",
"mailSessionKey":"Clef de session contenant l'adresse email",
"mailSubject":"Sujet du message de succès",
"mailPwdRstSubject":"Sujet du message de succès",
"mailTimeout":"Durée de validité d'une demande de réinitialisation",
"mailUrl":"URL de la page",
"mailPwdRstUrl":"URL de la page de réinitialisation du mot de passe",
"maintenance":"Mode maintenance",
"malformedValue":"Valeur mal formée",
"managerDn":"Compte de connexion LDAP",
......
......@@ -379,11 +379,11 @@
"lwpOpts":"Opzioni per le richieste del server",
"lwpSslOpts":"Opzioni SSL per le richieste del server",
"macros":"Macro",
"mailBody":"Successo contenuto di posta",
"mailPwdRstBody":"Successo contenuto di posta",
"mailCharset":"Charset",
"mailConfirmBody":"Contenuto della mail di conferma",
"mailConfirmSubject":"Soggetto della mail di conferma",
"mailContent":"Contenuto della mail",
"mailPwdRstConfirmBody":"Contenuto della mail di conferma",
"mailPwdRstConfirmSubject":"Soggetto della mail di conferma",
"mailPwdRstContent":"Contenuto della mail di ripristino della password",
"mailFrom":"Mittente",
"mailHeaders":"Intestazioni di posta",
"mailLDAPFilter":"Filtro mail",
......@@ -391,9 +391,9 @@
"mailOther":"Altro",
"mailReplyTo":"Indirizzo di risposta",
"mailSessionKey":"Chiave di sessione contenente l'indirizzo di posta",
"mailSubject":"Successo del soggetto della mail",
"mailPwdRstSubject":"Successo del soggetto della mail",
"mailTimeout":"Tempo di validità di una richiesta di ripristino della password",
"mailUrl":"URL della pagina",
"mailPwdRstUrl":"URL della pagina di ripristino della password",
"maintenance":"Modalità di manutenzione",
"malformedValue":"Valore malformato",
"managerDn":"Account",
......
......@@ -379,11 +379,11 @@
"lwpOpts":"Tùy chọn cho yêu cầu máy chủ",
"lwpSslOpts":"Tùy chọn SSL cho yêu cầu máy chủ",
"macros":"Macros",
"mailBody":"Nội dung thư thành công",
"mailPwdRstBody":"Nội dung thư thành công",
"mailCharset":"Charset",
"mailConfirmBody":"Xác nhận nội dung thư",
"mailConfirmSubject":"Xác nhận chủ đề thư",
"mailContent":"Nội dung thư",
"mailPwdRstConfirmBody":"Xác nhận nội dung thư",
"mailPwdRstConfirmSubject":"Xác nhận chủ đề thư",
"mailPwdRstContent":"Password reset mail content",
"mailFrom":"Người gửi thư",
"mailHeaders":"Tiêu đề thư",
"mailLDAPFilter":"Bộ lọc thư",
......@@ -391,9 +391,9 @@
"mailOther":"Khác",
"mailReplyTo":"Địa chỉ trả lời",
"mailSessionKey":"Khóa phiên chứa địa chỉ thư",
"mailSubject":"Chủ đề thư thành công",
"mailPwdRstSubject":"Chủ đề thư thành công",
"mailTimeout":"Thời hạn hợp lệ của yêu cầu đặt lại mật khẩu",
"mailUrl":"URL trang",
"mailPwdRstUrl":"Password reset page URL",
"maintenance":"Chế độ bảo trì",
"malformedValue":"Giá trị không hợp lệ",
"managerDn":"Tài khoản",
......
......@@ -379,11 +379,11 @@
"lwpOpts":"Options for server requests",
"lwpSslOpts":"SSL options for server requests",
"macros":"Macros",
"mailBody":"Success mail content",
"mailPwdRstBody":"Success mail content",
"mailCharset":"Charset",
"mailConfirmBody":"Confirmation mail content",
"mailConfirmSubject":"Confirmation mail subject",
"mailContent":"邮件内容",
"mailPwdRstConfirmBody":"Confirmation mail content",
"mailPwdRstConfirmSubject":"Confirmation mail subject",
"mailPwdRstContent":"Password reset mail content",
"mailFrom":"邮件发送者",
"mailHeaders":"邮件头",
"mailLDAPFilter":"邮件过滤器",
......@@ -391,9 +391,9 @@
"mailOther":"Other",
"mailReplyTo":"Reply address",
"mailSessionKey":"Session key containing mail address",
"mailSubject":"Success mail subject",
"mailPwdRstSubject":"Success mail subject",
"mailTimeout":"Validity time of a password reset request",
"mailUrl":"Page URL",
"mailPwdRstUrl":"Password reset page URL",
"maintenance":"Maintenance mode",
"malformedValue":"Malformed value",
"managerDn":"账户",
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -1330,8 +1330,8 @@
}, {
"_nodes": [{
"default": "http://auth.example.com/resetpwd",
"id": "mailUrl",
"title": "mailUrl"
"id": "mailPwdRstUrl",
"title": "mailPwdRstUrl"
}, {
"default": "[A-Z]{3}[a-z]{5}.\\d{2}",
"id": "randomPasswordRegexp",
......
......@@ -1502,8 +1502,8 @@
"type": "simpleInputContainer",
"nodes": [{
"default": "http://auth.example.com/resetpwd",
"id": "mailUrl",
"title": "mailUrl",
"id": "mailPwdRstUrl",
"title": "mailPwdRstUrl",
"data": "http://auth.example.com/resetpwd"
}, {
"default": "[A-Z]{3}[a-z]{5}.\\d{2}",
......
......@@ -1513,8 +1513,8 @@
"type": "simpleInputContainer",
"nodes": [{
"default": "http://auth.example.com/resetpwd",
"id": "mailUrl",
"title": "mailUrl",
"id": "mailPwdRstUrl",
"title": "mailPwdRstUrl",
"data": "http://auth.example.com/resetpwd"
}, {
"default": "[A-Z]{3}[a-z]{5}.\\d{2}",
......
......@@ -1513,8 +1513,8 @@
"type": "simpleInputContainer",
"nodes": [{
"default": "http://auth.example.com/resetpwd",
"id": "mailUrl",
"title": "mailUrl",
"id": "mailPwdRstUrl",
"title": "mailPwdRstUrl",
"data": "http://auth.example.com/resetpwd"
}, {
"default": "[A-Z]{3}[a-z]{5}.\\d{2}",
......
......@@ -1492,8 +1492,8 @@
"type": "simpleInputContainer",
"nodes": [{
"default": "http://auth.example.com/resetpwd",
"id": "mailUrl",
"title": "mailUrl",
"id": "mailPwdRstUrl",
"title": "mailPwdRstUrl",
"data": "http://auth.example.com/resetpwd"
}, {
"default": "[A-Z]{3}[a-z]{5}.\\d{2}",
......
......@@ -2067,8 +2067,8 @@
{
"_nodes": [{
"default": "http://auth.example.com/resetpwd",
"id": "mailUrl",
"title": "mailUrl"
"id": "mailPwdRstUrl",
"title": "mailPwdRstUrl"
},
{
"default": "[A-Z]{3}[a-z]{5}.\\d{2}",
......
......@@ -102,7 +102,7 @@ lib/Lemonldap/NG/Portal/Plugins/CheckState.pm
lib/Lemonldap/NG/Portal/Plugins/ForceAuthn.pm
lib/Lemonldap/NG/Portal/Plugins/GrantSession.pm
lib/Lemonldap/NG/Portal/Plugins/History.pm
lib/Lemonldap/NG/Portal/Plugins/MailReset.pm
lib/Lemonldap/NG/Portal/Plugins/MailPasswordReset.pm
lib/Lemonldap/NG/Portal/Plugins/Notifications.pm
lib/Lemonldap/NG/Portal/Plugins/PublicPages.pm
lib/Lemonldap/NG/Portal/Plugins/Register.pm
......
......@@ -2,7 +2,7 @@
# into "plugins" list in lemonldap-ng.ini, section "portal"
package Lemonldap::NG::Portal::Main::Plugins;
our $VERSION = '2.0.0';
our $VERSION = '2.0.2';
package Lemonldap::NG::Portal::Main;
......@@ -13,7 +13,7 @@ use Mouse;
#
# Developers: 2FA must be loaded before Notifications
our @pList = (
portalDisplayResetPassword => '::Plugins::MailReset',
portalDisplayResetPassword => '::Plugins::MailPasswordReset',
portalStatus => '::Plugins::Status',
cda => '::Plugins::CDA',
notification => '::Plugins::Notifications',
......
package Lemonldap::NG::Portal::Plugins::MailReset;
package Lemonldap::NG::Portal::Plugins::MailPasswordReset;
use strict;
use Encode;
......@@ -28,7 +28,7 @@ use Lemonldap::NG::Portal::Main::Constants qw(
PE_USERNOTFOUND
);
our $VERSION = '2.0.1';
our $VERSION = '2.0.2';
extends 'Lemonldap::NG::Portal::Main::Plugin',
'Lemonldap::NG::Portal::Lib::SMTP';
......@@ -41,8 +41,8 @@ has ott => (
is => 'rw',
lazy => 1,
default => sub {
my $ott =
$_[0]->{p}->loadModule('Lemonldap::NG::Portal::Lib::OneTimeToken');
my $ott = $_[0]->{p}
->loadModule('Lemonldap::NG::Portal::Lib::OneTimeToken');
$ott->timeout( $_[0]->conf->{formTimeout} );
return $ott;
}
......@@ -87,8 +87,7 @@ sub _reset {
my ( $mailToken, $newPwd, $confirmPwd, %tplPrms );
# PASSWORD CHANGE FORM => changePwd()
if (
$req->method =~ /^POST$/i
if ($req->method =~ /^POST$/i
and ( $req->param('newpassword')
or $req->param('confirmpassword')
or $req->param('reset') )
......@@ -109,7 +108,8 @@ sub _reset {
# OTHER FORMS
if ($mailToken) {
$self->logger->debug( "Token given for password reset: " . $mailToken );
$self->logger->debug(
"Token given for password reset: " . $mailToken );
# Check if token is valid
my $mailSession = $self->p->getApacheSession($mailToken);
......@@ -119,8 +119,8 @@ sub _reset {
}
$req->{user} = $mailSession->data->{user};
$req->data->{mailAddress} =
$mailSession->data->{ $self->conf->{mailSessionKey} };
$req->data->{mailAddress}
= $mailSession->data->{ $self->conf->{mailSessionKey} };
$self->logger->debug( 'User associated to: ' . $req->{user} );
# Restore pdata if any
......@@ -151,7 +151,8 @@ sub _reset {
my $captcha = $req->param('captcha');
unless ($captcha) {
$self->userLogger->notice('Reset try with captcha not filled');
$self->userLogger->notice(
'Reset try with captcha not filled');
# Set captcha or token
$self->setSecurity($req);
......@@ -183,8 +184,7 @@ sub _reset {
# Search user in database
$req->steps(
[
'getUser', 'setSessionInfo',
[ 'getUser', 'setSessionInfo',
'setMacros', 'setGroups',
'setPersistentSessionInfo', 'setLocalGroups'