Isolate register info in ->{registerInfo} (#26)

This commit is contained in:
Clément Oudot 2014-05-28 15:41:32 +00:00
parent be04271809
commit 2fe20b1248

View File

@ -102,27 +102,29 @@ sub extractRegisterInfo {
$self->getApacheSession( $self->{register_token} );
if ( $registerSession->data ) {
$self->{mail} = $registerSession->data->{mail};
$self->{firstname} = $registerSession->data->{firstname};
$self->{lastname} = $registerSession->data->{lastname};
$self->lmLog( "User associated to token: " . $self->{mail},
$self->{registerInfo}->{mail} = $registerSession->data->{mail};
$self->{registerInfo}->{firstname} =
$registerSession->data->{firstname};
$self->{registerInfo}->{lastname} =
$registerSession->data->{lastname};
$self->lmLog( "User associated to token: " . $self->{registerInfo}->{mail},
'debug' );
}
return PE_BADMAILTOKEN unless ( $self->{mail} );
return PE_BADMAILTOKEN unless ( $self->{registerInfo}->{mail} );
}
else {
# Use submitted value
$self->{mail} = $self->param('mail');
$self->{firstname} = $self->param('firstname');
$self->{lastname} = $self->param('lastname');
$self->{registerInfo}->{mail} = $self->param('mail');
$self->{registerInfo}->{firstname} = $self->param('firstname');
$self->{registerInfo}->{lastname} = $self->param('lastname');
# Captcha for register form
# Only if register session does not already exist
if ( $self->{captcha_register_enabled}
&& $self->{mail}
&& !$self->getRegisterSession( $self->{mail} ) )
&& $self->{registerInfo}->{mail}
&& !$self->getRegisterSession( $self->{registerInfo}->{mail} ) )
{
$self->{captcha_user_code} = $self->param('captcha_user_code');
$self->{captcha_check_code} = $self->param('captcha_code');
@ -169,7 +171,8 @@ sub extractRegisterInfo {
}
# Check mail
return PE_MALFORMEDUSER unless ( $self->{mail} =~ /$self->{userControl}/o );
return PE_MALFORMEDUSER
unless ( $self->{registerInfo}->{mail} =~ /$self->{userControl}/o );
PE_OK;
}
@ -181,6 +184,8 @@ sub extractRegisterInfo {
sub getRegisterUser {
my ($self) = splice @_;
$self->{mail} = $self->{registerInfo}->{mail};
if ( $self->getUser() == PE_OK ) {
# User already exists
@ -203,7 +208,7 @@ sub storeRegisterSession {
# Skip this step if confirmation was already sent
return PE_OK
if ( $self->{register_token}
or $self->getRegisterSession( $self->{mail} ) );
or $self->getRegisterSession( $self->{registerInfo}->{mail} ) );
# Create a new session
my $registerSession = $self->getApacheSession();
@ -219,16 +224,17 @@ sub storeRegisterSession {
# Store expiration timestamp for further use
$infos->{registerSessionTimeoutTimestamp} = $time + $registerTimeout;
$self->{registerSessionTimeoutTimestamp} = $time + $registerTimeout;
$self->{registerInfo}->{registerSessionTimeoutTimestamp} =
$time + $registerTimeout;
# Store start timestamp for further use
$infos->{registerSessionStartTimestamp} = $time;
$self->{registerSessionStartTimestamp} = $time;
$self->{registerInfo}->{registerSessionStartTimestamp} = $time;
# Store infos
$infos->{mail} = $self->{mail};
$infos->{firstname} = $self->{firstname};
$infos->{lastname} = $self->{lastname};
$infos->{mail} = $self->{registerInfo}->{mail};
$infos->{firstname} = $self->{registerInfo}->{firstname};
$infos->{lastname} = $self->{registerInfo}->{lastname};
$infos->{ipAddr} = $self->ipAddr;
# Store type
@ -250,7 +256,8 @@ sub sendConfirmationMail {
return PE_OK if $self->{register_token};
# Check if confirmation mail has already been sent
my $register_session = $self->getRegisterSession( $self->{mail} );
my $register_session =
$self->getRegisterSession( $self->{registerInfo}->{mail} );
$self->{mail_already_sent} = ( $register_session and !$self->{id} ) ? 1 : 0;
# Read session to get creation and expiration dates
@ -259,13 +266,13 @@ sub sendConfirmationMail {
$self->lmLog( "Register session found: $register_session", 'debug' );
my $registerSession = $self->getApacheSession( $register_session, 1 );
$self->{registerSessionTimeoutTimestamp} =
$self->{registerInfo}->{registerSessionTimeoutTimestamp} =
$registerSession->data->{registerSessionTimeoutTimestamp};
$self->{registerSessionStartTimestamp} =
$self->{registerInfo}->{registerSessionStartTimestamp} =
$registerSession->data->{registerSessionStartTimestamp};
# Mail session expiration date
my $expTimestamp = $self->{registerSessionTimeoutTimestamp};
my $expTimestamp = $self->{registerInfo}->{registerSessionTimeoutTimestamp};
$self->lmLog( "Register expiration timestamp: $expTimestamp", 'debug' );
@ -273,7 +280,7 @@ sub sendConfirmationMail {
$self->{expMailTime} = strftime( "%H:%M", localtime $expTimestamp );
# Mail session start date
my $startTimestamp = $self->{registerSessionStartTimestamp};
my $startTimestamp = $self->{registerInfo}->{registerSessionStartTimestamp};
$self->lmLog( "Register start timestamp: $startTimestamp", 'debug' );
@ -311,17 +318,18 @@ sub sendConfirmationMail {
$body =~ s/\$expMailDate/$self->{expMailDate}/g;
$body =~ s/\$expMailTime/$self->{expMailTime}/g;
$body =~ s/\$url/$url/g;
$body =~ s/\$(\w+)/decode("utf8",$registerSession->data->{$1})/ge;
$body =~ s/\$(\w+)/decode("utf8",$self->{registerInfo}->{$1})/ge;
# Send mail
return PE_MAILERROR
unless $self->send_mail( $self->{mail}, $subject, $body, $html );
unless $self->send_mail( $self->{registerInfo}->{mail}, $subject, $body,
$html );
PE_MAILCONFIRMOK;
}
## @method int registerUser
# Change the password or generate a new password
# Get register session and create the account
# @return Lemonldap::NG::Portal constant
sub registerUser {
my ($self) = splice @_;
@ -331,14 +339,14 @@ sub registerUser {
$self->lmLog( "Generated password: " . $password, 'debug' );
$self->{newpassword} = $password;
$self->{forceReset} = 1;
$self->{registerInfo}->{password} = $password;
$self->{forceReset} = 1;
my $result;
# TODO call UserDB createUser
$self->lmLog( "Create new user $self->{mail}", 'debug' );
$self->lmLog( "Create new user $self->{registerInfo}->{mail}", 'debug' );
# Register token can be used only one time, delete the session if all is ok
if ( $result == PE_OK ) {
@ -389,12 +397,12 @@ sub sendRegisterMail {
$body = $template->output();
# Replace variables in body
my $password = $self->{newpassword};
$body =~ s/\$password/$password/g;
$body =~ s/\$(\w+)/decode("utf8",$self->{registerInfo}->{$1})/ge;
# Send mail
return PE_MAILERROR
unless $self->send_mail( $self->{mail}, $subject, $body, $html );
unless $self->send_mail( $self->{registerInfo}->{mail}, $subject, $body,
$html );
PE_MAILOK;
}