From 9a2264927cb8280a881f991b28252fdf30bedf8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Oudot?= Date: Wed, 29 Jun 2011 12:47:25 +0000 Subject: [PATCH] Follow authentication process if password modification is OK (#345) --- .../lib/Lemonldap/NG/Portal/Menu.pm | 3 ++- .../lib/Lemonldap/NG/Portal/Simple.pm | 21 ++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/modules/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Menu.pm b/modules/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Menu.pm index 8941defeb..0f069f048 100644 --- a/modules/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Menu.pm +++ b/modules/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Menu.pm @@ -34,7 +34,8 @@ sub menuInit { $self->{user} = $self->{sessionInfo}->{_user}; # Try to change password - $self->{menuError} = $self->_subProcess(qw(passwordDBInit modifyPassword)); + $self->{menuError} = $self->_subProcess(qw(passwordDBInit modifyPassword)) + unless $self->{ignorePasswordChange}; # Default menu error code $self->{menuError} ||= $self->{error}; diff --git a/modules/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Simple.pm b/modules/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Simple.pm index 3529ab4aa..033d09aae 100644 --- a/modules/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Simple.pm +++ b/modules/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Simple.pm @@ -1786,7 +1786,26 @@ sub passwordDBInit { return $self->SUPER::passwordDBInit(); } -# modifyPassword(): must be implemented in PasswordDB* module +## @apmethod int modifyPassword() +# Call modifyPassword from PasswordDB* module +# Continue auth process if password change is ok +# @return Lemonldap::NG::Portal constant +sub modifyPassword { + my $self = shift; + + my $res = $self->SUPER::modifyPassword(); + + # Continue process if password change is ok + if ( $res == PE_PASSWORD_OK ) { + + # Set a flag to ignore password change in Menu + $self->{ignorePasswordChange} = 1; + + return PE_OK; + } + + return $res; +} ##@apmethod int setSessionInfo() # Set ipAddr, xForwardedForAddr, startTime, updateTime, _utime and _userDB