Commit f1d64967 authored by Christophe Maudoux's avatar Christophe Maudoux

Merge branch 'v2.0'

parents f12293eb e388892f
lemonldap-ng (2.1.0) artful; urgency=medium
lemonldap-ng (2.0.1-1) unstable; urgency=medium
* New release. See changes on our website:
......
......@@ -164,7 +164,7 @@
"UA" : "$ENV{HTTP_USER_AGENT}",
"_whatToTrace": "$_auth eq 'SAML' ? \"$_user\\@$_idpConfKey\" : $_auth eq 'OpenIDConnect' ? \"$_user\\@$_oidcConnectedRP\" : \"$_user\""
},
"mailPwdRstUrl": "http://auth.example.com:__port__/resetpwd",
"mailUrl": "http://auth.example.com:__port__/resetpwd",
"notification": 1,
"notificationStorage": "File",
"notificationStorageOptions": {
......
......@@ -121,9 +121,9 @@ sub defaultValues {
'macros' => {},
'mailCharset' => 'utf-8',
'mailFrom' => 'noreply@example.com',
'mailPwdRstTimeout' => 0,
'mailPwdRstUrl' => 'http://auth.example.com/resetpwd',
'mailSessionKey' => 'mail',
'mailTimeout' => 0,
'mailUrl' => 'http://auth.example.com/resetpwd',
'managerDn' => '',
'managerPassword' => '',
'max2FDevices' => 10,
......
......@@ -16,7 +16,7 @@ use feature 'state';
extends 'Lemonldap::NG::Common::Conf::AccessLib',
'Lemonldap::NG::Common::Session::REST';
our $VERSION = '2.0.0';
our $VERSION = '2.0.2';
#############################
# I. INITIALIZATION METHODS #
......@@ -42,26 +42,10 @@ sub addRoutes {
['DELETE']
);
## ADD 2FA DEVICE
#->addRoute(
#sfa => { ':sessionType' => { ':sessionId' => 'add2FA' } },
#['PUT']
#)
## VERIFY 2FA DEVICE
#->addRoute(
#sfa => { ':sessionType' => { ':sessionId' => 'verify2FA' } },
#['POST']
#);
$self->setTypes($conf);
#$self->{ipField} ||= 'ipAddr';
$self->{multiValuesSeparator} ||= '; ';
$self->{hiddenAttributes} //= "_password";
$self->{TOTPCheck} = '1';
$self->{U2FCheck} = '1';
$self->{UBKCheck} = '1';
$self->{TOTPCheck} = $self->{U2FCheck} = $self->{UBKCheck} = '1';
}
###################
......@@ -91,26 +75,6 @@ sub del2F {
}
}
#sub add2FA {
#my ( $self, $req, $session, $skey ) = @_;
#eval 'use Crypt::U2F::Server::Simple';
#if ($@) {
#$self->error("Can't load U2F library: $@");
#return 0;
#}
#return $self->addU2FKey( $req, $session, $skey );
#}
#sub verify2FA {
#my ( $self, $req, $session, $skey ) = @_;
#return $self->addU2FKey( $req, $session, $skey );
#}
########################
# III. DISPLAY METHODS #
########################
......@@ -120,7 +84,6 @@ sub sfa {
# Case 1: only one session is required
if ($session) {
return $self->session( $req, $session, $skey );
}
......
......@@ -1558,10 +1558,19 @@ 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'
......@@ -1573,33 +1582,24 @@ 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' => {
'mailReplyTo' => {
'type' => 'text'
},
'mailPwdRstSubject' => {
'mailSessionKey' => {
'default' => 'mail',
'type' => 'text'
},
'mailSubject' => {
'type' => 'text'
},
'mailPwdRstTimeout' => {
'mailTimeout' => {
'default' => 0,
'type' => 'int'
},
'mailPwdRstUrl' => {
'mailUrl' => {
'default' => 'http://auth.example.com/resetpwd',
'type' => 'url'
},
'mailReplyTo' => {
'type' => 'text'
},
'mailSessionKey' => {
'default' => 'mail',
'type' => 'text'
},
'maintenance' => {
'default' => 0,
'type' => 'bool'
......
......@@ -1137,30 +1137,30 @@ sub attributes {
},
mailReplyTo =>
{ type => 'text', documentation => 'Reply-To address' },
mailPwdRstTimeout => {
mailTimeout => {
type => 'int',
default => 0,
documentation => 'Mail password reset session timeout',
},
# Password reset
mailPwdRstBody =>
mailBody =>
{ type => 'longtext', documentation => 'Custom password reset mail body', },
mailPwdRstConfirmBody => {
mailConfirmBody => {
type => 'longtext',
documentation => 'Custom confirm password reset mail body',
},
mailPwdRstConfirmSubject => {
mailConfirmSubject => {
type => 'text',
documentation => 'Mail subject for reset confirmation',
},
mailPwdRstSubject => {
mailSubject => {
type => 'text',
documentation => 'Mail subject for new password email',
},
mailPwdRstUrl => {
mailUrl => {
type => 'url',
default => 'http://auth.example.com/resetpwd',
documentation => 'URL of password reset page',
......
......@@ -542,20 +542,20 @@ sub tree {
{ title => 'passwordManagement',
help => 'resetpassword.html',
nodes => [
{ title => 'mailPwdRstContent',
{ title => 'mailContent',
form => 'simpleInputContainer',
nodes => [
'mailPwdRstSubject',
'mailPwdRstBody',
'mailPwdRstConfirmSubject',
'mailPwdRstConfirmBody'
'mailSubject',
'mailBody',
'mailConfirmSubject',
'mailConfirmBody'
]
},
{ title => 'mailOther',
form => 'simpleInputContainer',
nodes => [
'mailPwdRstUrl',
'mailPwdRstTimeout',
'mailUrl',
'mailTimeout',
'randomPasswordRegexp',
]
}
......
......@@ -379,11 +379,11 @@
"lwpOpts":"خيارات لطلبات الخادم",
"lwpSslOpts":"خيارات سسل لطلبات الخادم",
"macros":"ماكرو",
"mailPwdRstBody":"محتوى البريد الناجح",
"mailBody":"محتوى البريد الناجح",
"mailCharset":"charset",
"mailPwdRstConfirmBody":"تأكيد محتوى البريد",
"mailPwdRstConfirmSubject":"تأكيد عنوان بريد",
"mailPwdRstContent":"Password reset mail content",
"mailConfirmBody":"تأكيد محتوى البريد",
"mailConfirmSubject":"تأكيد عنوان بريد",
"mailContent":"Password reset mail content",
"mailFrom":"مرسل البريد",
"mailHeaders":"هيدر البريد",
"mailLDAPFilter":"فلتر البريد",
......@@ -391,9 +391,9 @@
"mailOther":"آخر",
"mailReplyTo":"عنوان الجواب",
"mailSessionKey":"مفتاح الجلسة الذي يحتوي على عنوان البريد الإلكتروني",
"mailPwdRstSubject":"نجاح عنوان البريد",
"mailPwdRstTimeout":"عدم تطابق كلمت المرور",
"mailPwdRstUrl":"Page URL",
"mailSubject":"نجاح عنوان البريد",
"mailTimeout":"عدم تطابق كلمت المرور",
"mailUrl":"Page URL",
"maintenance":"وضع الصيانة",
"malformedValue":"قيمة سيئة التصميم",
"managerDn":"حساب",
......
......@@ -379,11 +379,11 @@
"lwpOpts":"Options for server requests",
"lwpSslOpts":"SSL options for server requests",
"macros":"Macros",
"mailPwdRstBody":"Success mail content",
"mailBody":"Success mail content",
"mailCharset":"Charset",
"mailPwdRstConfirmBody":"Confirmation mail content",
"mailPwdRstConfirmSubject":"Confirmation mail subject",
"mailPwdRstContent":"Password reset mail content",
"mailConfirmBody":"Confirmation mail content",
"mailConfirmSubject":"Confirmation mail subject",
"mailContent":"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",
"mailPwdRstSubject":"Success mail subject",
"mailPwdRstTimeout":"Validity time of a password reset request",
"mailPwdRstUrl":"Page URL",
"mailSubject":"Success mail subject",
"mailTimeout":"Validity time of a password reset request",
"mailUrl":"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",
"mailPwdRstBody":"Success mail content",
"mailBody":"Success mail content",
"mailCharset":"Charset",
"mailPwdRstConfirmBody":"Confirmation mail content",
"mailPwdRstConfirmSubject":"Confirmation mail subject",
"mailPwdRstContent":"Password reset mail content",
"mailConfirmBody":"Confirmation mail content",
"mailConfirmSubject":"Confirmation mail subject",
"mailContent":"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",
"mailPwdRstSubject":"Success mail subject",
"mailPwdRstTimeout":"Validity time of a password reset request",
"mailPwdRstUrl":"Reset page URL",
"mailSubject":"Success mail subject",
"mailTimeout":"Validity time of a password reset request",
"mailUrl":"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",
"mailPwdRstBody":"Contenu du message de succès",
"mailBody":"Contenu du message de succès",
"mailCharset":"Charset",
"mailPwdRstConfirmBody":"Contenu du message de confirmation",
"mailPwdRstConfirmSubject":"Sujet du message de confirmation",
"mailPwdRstContent":"Contenu du mail de réinitialisation",
"mailConfirmBody":"Contenu du message de confirmation",
"mailConfirmSubject":"Sujet du message de confirmation",
"mailContent":"Contenu du mail de réinitialisation",
"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",
"mailPwdRstSubject":"Sujet du message de succès",
"mailPwdRstTimeout":"Durée de validité d'une requête de réinitialisation",
"mailPwdRstUrl":"URL de la page de réinitialisation",
"mailSubject":"Sujet du message de succès",
"mailTimeout":"Durée de validité d'une requête de réinitialisation",
"mailUrl":"URL de la page de réinitialisation",
"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",
"mailPwdRstBody":"Successo contenuto di posta",
"mailBody":"Successo contenuto di posta",
"mailCharset":"Charset",
"mailPwdRstConfirmBody":"Contenuto della mail di conferma",
"mailPwdRstConfirmSubject":"Soggetto della mail di conferma",
"mailPwdRstContent":"Contenuto della mail di ripristino della password",
"mailConfirmBody":"Contenuto della mail di conferma",
"mailConfirmSubject":"Soggetto della mail di conferma",
"mailContent":"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",
"mailPwdRstSubject":"Successo del soggetto della mail",
"mailPwdRstTimeout":"Tempo di validità di una richiesta di ripristino della password",
"mailPwdRstUrl":"URL della pagina",
"mailSubject":"Successo del soggetto della mail",
"mailTimeout":"Tempo di validità di una richiesta di ripristino della password",
"mailUrl":"URL della pagina",
"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",
"mailPwdRstBody":"Nội dung thư thành công",
"mailBody":"Nội dung thư thành công",
"mailCharset":"Charset",
"mailPwdRstConfirmBody":"Xác nhận nội dung thư",
"mailPwdRstConfirmSubject":"Xác nhận chủ đề thư",
"mailPwdRstContent":"Password reset mail content",
"mailConfirmBody":"Xác nhận nội dung thư",
"mailConfirmSubject":"Xác nhận chủ đề thư",
"mailContent":"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ư",
"mailPwdRstSubject":"Chủ đề thư thành công",
"mailPwdRstTimeout":"Thời hạn hợp lệ của yêu cầu đặt lại mật khẩu",
"mailPwdRstUrl":"Reset page URL",
"mailSubject":"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":"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",
"mailPwdRstBody":"Success mail content",
"mailBody":"Success mail content",
"mailCharset":"Charset",
"mailPwdRstConfirmBody":"Confirmation mail content",
"mailPwdRstConfirmSubject":"Confirmation mail subject",
"mailPwdRstContent":"Password reset mail content",
"mailConfirmBody":"Confirmation mail content",
"mailConfirmSubject":"Confirmation mail subject",
"mailContent":"Password reset mail content",
"mailFrom":"邮件发送者",
"mailHeaders":"邮件头",
"mailLDAPFilter":"邮件过滤器",
......@@ -391,9 +391,9 @@
"mailOther":"Other",
"mailReplyTo":"Reply address",
"mailSessionKey":"Session key containing mail address",
"mailPwdRstSubject":"Success mail subject",
"mailPwdRstTimeout":"Validity time of a password reset request",
"mailPwdRstUrl":"Reset page URL",
"mailSubject":"Success mail subject",
"mailTimeout":"Validity time of a password reset request",
"mailUrl":"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,16 +1330,16 @@
}, {
"_nodes": [{
"default": "http://auth.example.com/resetpwd",
"id": "mailPwdRstUrl",
"title": "mailPwdRstUrl"
"id": "mailUrl",
"title": "mailUrl"
}, {
"default": "[A-Z]{3}[a-z]{5}.\\d{2}",
"id": "randomPasswordRegexp",
"title": "randomPasswordRegexp"
}, {
"default": 0,
"id": "mailPwdRstTimeout",
"title": "mailPwdRstTimeout",
"id": "mailTimeout",
"title": "mailTimeout",
"type": "int"
}, {
"default": "mail",
......
......@@ -1502,8 +1502,8 @@
"type": "simpleInputContainer",
"nodes": [{
"default": "http://auth.example.com/resetpwd",
"id": "mailPwdRstUrl",
"title": "mailPwdRstUrl",
"id": "mailUrl",
"title": "mailUrl",
"data": "http://auth.example.com/resetpwd"
}, {
"default": "[A-Z]{3}[a-z]{5}.\\d{2}",
......@@ -1512,8 +1512,8 @@
"data": "[A-Z]{3}[a-z]{5}.\\d{2}"
}, {
"default": 0,
"id": "mailPwdRstTimeout",
"title": "mailPwdRstTimeout",
"id": "mailTimeout",
"title": "mailTimeout",
"type": "int",
"data": 0
}, {
......
......@@ -1513,8 +1513,8 @@
"type": "simpleInputContainer",
"nodes": [{
"default": "http://auth.example.com/resetpwd",
"id": "mailPwdRstUrl",
"title": "mailPwdRstUrl",
"id": "mailUrl",
"title": "mailUrl",
"data": "http://auth.example.com/resetpwd"
}, {
"default": "[A-Z]{3}[a-z]{5}.\\d{2}",
......@@ -1523,8 +1523,8 @@
"data": "[A-Z]{3}[a-z]{5}.\\d{2}"
}, {
"default": 0,
"id": "mailPwdRstTimeout",
"title": "mailPwdRstTimeout",
"id": "mailTimeout",
"title": "mailTimeout",
"type": "int",
"data": 0
}, {
......
......@@ -1513,8 +1513,8 @@
"type": "simpleInputContainer",
"nodes": [{
"default": "http://auth.example.com/resetpwd",
"id": "mailPwdRstUrl",
"title": "mailPwdRstUrl",
"id": "mailUrl",
"title": "mailUrl",
"data": "http://auth.example.com/resetpwd"
}, {
"default": "[A-Z]{3}[a-z]{5}.\\d{2}",
......@@ -1523,8 +1523,8 @@
"data": "[A-Z]{3}[a-z]{5}.\\d{2}"
}, {
"default": 0,
"id": "mailPwdRstTimeout",
"title": "mailPwdRstTimeout",
"id": "mailTimeout",
"title": "mailTimeout",
"type": "int",
"data": 0
}, {
......
......@@ -1492,8 +1492,8 @@
"type": "simpleInputContainer",
"nodes": [{
"default": "http://auth.example.com/resetpwd",
"id": "mailPwdRstUrl",
"title": "mailPwdRstUrl",
"id": "mailUrl",
"title": "mailUrl",
"data": "http://auth.example.com/resetpwd"
}, {
"default": "[A-Z]{3}[a-z]{5}.\\d{2}",
......@@ -1502,8 +1502,8 @@
"data": "[A-Z]{3}[a-z]{5}.\\d{2}"
}, {
"default": 0,
"id": "mailPwdRstTimeout",
"title": "mailPwdRstTimeout",
"id": "mailTimeout",
"title": "mailTimeout",
"type": "int",
"data": 0
}, {
......
......@@ -2067,8 +2067,8 @@
{
"_nodes": [{
"default": "http://auth.example.com/resetpwd",
"id": "mailPwdRstUrl",
"title": "mailPwdRstUrl"
"id": "mailUrl",
"title": "mailUrl"
},
{
"default": "[A-Z]{3}[a-z]{5}.\\d{2}",
......@@ -2077,8 +2077,8 @@
},
{
"default": 0,
"id": "mailPwdRstTimeout",
"title": "mailPwdRstTimeout",
"id": "mailTimeout",
"title": "mailTimeout",
"type": "int"
},
{
......
......@@ -464,12 +464,12 @@ t/42-Register-Demo-with-captcha.t
t/42-Register-Demo-with-token.t
t/42-Register-Demo.t
t/42-Register-LDAP.t
t/43-MailReset-Choice.t
t/43-MailReset-DBI.t
t/43-MailReset-LDAP.t
t/43-MailReset-with-captcha.t
t/43-MailReset-with-token.t
t/43-MailReset.t
t/43-MailPasswordReset-Choice.t
t/43-MailPasswordReset-DBI.t
t/43-MailPasswordReset-LDAP.t
t/43-MailPasswordReset-with-captcha.t
t/43-MailPasswordReset-with-token.t
t/43-MailPasswordReset.t
t/50-IssuerGet.t
t/60-Status.t
t/61-BruteForceProtection.t
......
......@@ -298,9 +298,6 @@ sub run {
[ 'Content-Type' => 'application/json', 'Content-Length' => 12, ],
['{"result":1}']
];
my $err = Crypt::U2F::Server::Simple::lastError();
$self->userLogger->warn("U2F Unregistration failed: $err");
return $self->p->sendError( $req, $err, 200 );
}
else {
$self->logger->error("Unknown U2F action -> $action");
......@@ -316,7 +313,6 @@ sub loadUser {
# Read existing 2FDevices
$self->logger->debug("Looking for 2F Devices ...");
my ( $kh, $uk, $_2fDevices );
my @u2fs = ();
if ( $req->userData->{_2fDevices} ) {
......
......@@ -287,7 +287,7 @@ sub display {
ASK_LOGINS => $req->param('checkLogins') || 0,
DISPLAY_RESETPASSWORD => $self->conf->{portalDisplayResetPassword},
DISPLAY_REGISTER => $self->conf->{portalDisplayRegister},
MAIL_URL => $self->conf->{mailPwdRstUrl},
MAIL_URL => $self->conf->{mailUrl},
REGISTER_URL => $self->conf->{registerUrl},
HIDDEN_INPUTS => $self->buildHiddenForm($req),
STAYCONNECTED => $self->conf->{stayConnected},
......
......@@ -203,9 +203,9 @@ sub _reset {
return PE_MAILNOTFOUND;
}
my $mailPwdRstTimeout
= $self->conf->{mailPwdRstTimeout} || $self->conf->{timeout};
my $expTimestamp = time() + $mailPwdRstTimeout;
my $mailTimeout
= $self->conf->{mailTimeout} || $self->conf->{timeout};
my $expTimestamp = time() + $mailTimeout;
$req->data->{expMailDate}
= strftime( "%d/%m/%Y", localtime $expTimestamp );
$req->data->{expMailTime}
......@@ -227,12 +227,12 @@ sub _reset {
# Use default session timeout and mail session timeout to compute it
my $time = time();
my $timeout = $self->conf->{timeout};
my $mailPwdRstTimeout = $self->conf->{mailPwdRstTimeout} || $timeout;
my $mailTimeout = $self->conf->{mailTimeout} || $timeout;
$infos->{_utime} = $time + ( $mailPwdRstTimeout - $timeout );
$infos->{_utime} = $time + ( $mailTimeout - $timeout );
# Store expiration timestamp for further use
$infos->{mailSessionTimeoutTimestamp} = $time + $mailPwdRstTimeout;
$infos->{mailSessionTimeoutTimestamp} = $time + $mailTimeout;
# Store start timestamp for further use
$infos->{mailSessionStartTimestamp} = $time;
......@@ -306,7 +306,7 @@ sub _reset {
my $req_url = $req->data->{_url};
my $skin = $self->p->getSkin($req);
my $url
= $self->conf->{mailPwdRstUrl} . '?'
= $self->conf->{mailUrl} . '?'
. build_urlencoded(
mail_token => $req->{id},
skin => $skin,
......@@ -316,17 +316,17 @@ sub _reset {
# Build mail content
$tplPrms{MAIN_LOGO} = $self->conf->{portalMainLogo};
my $tr = $self->translate($req);
my $subject = $self->conf->{mailPwdRstConfirmSubject};
my $subject = $self->conf->{mailConfirmSubject};
unless ($subject) {
$subject = 'mailPwdRstConfirmSubject';
$subject = 'mailConfirmSubject';
$tr->( \$subject );
}
my $body;
my $html;
if ( $self->conf->{mailPwdRstConfirmBody} ) {
if ( $self->conf->{mailConfirmBody} ) {
# We use a specific text message, no html
$body = $self->{mailPwdRstConfirmBody};
$body = $self->{mailConfirmBody};
}
else {
......@@ -454,17 +454,17 @@ sub changePwd {
# Build mail content
$tplPrms{MAIN_LOGO} = $self->conf->{portalMainLogo};
my $tr = $self->translate($req);
my $subject = $self->conf->{mailPwdRstSubject};
my $subject = $self->conf->{mailSubject};
unless ($subject) {
$subject = 'mailPwdRstSubject';
$subject = 'mailSubject';
$tr->( \$subject );
}