add: Auth modules now accept a "returnUrl" form parameter when logging in or creating a new account. User will be redirected to the value in "returnUrl" after login / create account is complete.
add: L_LoginBox macro has a form.returnUrl template var that returns a user to the exact page they logged in from
This commit is contained in:
parent
04da356822
commit
1f10f07338
8 changed files with 163 additions and 9 deletions
|
|
@ -3,7 +3,7 @@ package WebGUI::Auth;
|
|||
=head1 LEGAL
|
||||
|
||||
-------------------------------------------------------------------
|
||||
WebGUI is Copyright 2001-2008 Plain Black Corporation.
|
||||
WebGUI is Copyright 2001-2007 Plain Black Corporation.
|
||||
-------------------------------------------------------------------
|
||||
Please read the legal notices (docs/legal.txt) and the license
|
||||
(docs/license.txt) that came with this distribution before using
|
||||
|
|
@ -283,7 +283,11 @@ sub createAccountSave {
|
|||
|
||||
|
||||
# If we have a redirectAfterLogin, redirect the user
|
||||
if ($self->session->scratch->get("redirectAfterLogin")) {
|
||||
if ($self->session->form->get('returnUrl')) {
|
||||
$self->session->http->setRedirect( $self->session->form->get('returnUrl') );
|
||||
$self->session->scratch->delete("redirectAfterLogin");
|
||||
}
|
||||
elsif ($self->session->scratch->get("redirectAfterLogin")) {
|
||||
my $url = $self->session->scratch->delete("redirectAfterLogin");
|
||||
$self->session->http->setRedirect($url);
|
||||
return undef;
|
||||
|
|
@ -459,9 +463,15 @@ sub displayLogin {
|
|||
my $vars = $_[1];
|
||||
# Automatically set redirectAfterLogin unless we've linked here directly
|
||||
# or it's already been set to perform another operation
|
||||
unless ($self->session->form->process("op") eq "auth"
|
||||
|| ($self->session->scratch->get("redirectAfterLogin") =~ /op=\w+/) ) {
|
||||
$self->session->scratch->set("redirectAfterLogin",$self->session->url->page($self->session->env->get("QUERY_STRING")));
|
||||
unless (
|
||||
$self->session->form->process("op") eq "auth"
|
||||
|| ($self->session->scratch->get("redirectAfterLogin") =~ /op=\w+/)
|
||||
) {
|
||||
my $returnUrl
|
||||
= $self->session->form->get('returnUrl')
|
||||
|| $self->session->url->page( $self->session->env->get('QUERY_STRING') )
|
||||
;
|
||||
$self->session->scratch->set("redirectAfterLogin", $returnUrl);
|
||||
}
|
||||
my $i18n = WebGUI::International->new($self->session);
|
||||
$vars->{title} = $i18n->get(66);
|
||||
|
|
@ -669,7 +679,13 @@ sub login {
|
|||
$currentUrl =~ s/^https:/http:/;
|
||||
$self->session->http->setRedirect($currentUrl);
|
||||
}
|
||||
if ($self->session->scratch->get("redirectAfterLogin")) {
|
||||
|
||||
# Set the proper redirect
|
||||
if ($self->session->form->get('returnUrl')) {
|
||||
$self->session->http->setRedirect( $self->session->form->get('returnUrl') );
|
||||
$self->session->scratch->delete("redirectAfterLogin");
|
||||
}
|
||||
elsif ($self->session->scratch->get("redirectAfterLogin")) {
|
||||
$self->session->http->setRedirect($self->session->scratch->get("redirectAfterLogin"));
|
||||
$self->session->scratch->delete("redirectAfterLogin");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -243,6 +243,10 @@ our $HELP = {
|
|||
name => 'username',
|
||||
description => 'helpvar commentLoop username',
|
||||
},
|
||||
{
|
||||
name => 'url_deleteComment',
|
||||
description => 'helpvar commentLoop url_deleteComment',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ our $HELP = {
|
|||
},
|
||||
{ 'name' => 'account.create.url' },
|
||||
{ 'name' => 'account.create.label' },
|
||||
{ 'name' => 'helpvar form.returnUrl' },
|
||||
{ 'required' => 1,
|
||||
'name' => 'form.footer'
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,6 +75,14 @@ sub process {
|
|||
$var{'logout.url'} = $session->url->page("op=auth;method=logout");
|
||||
$var{'account.display.url'} = $session->url->page('op=auth;method=displayAccount');
|
||||
$var{'logout.label'} = $i18n->get(49);
|
||||
|
||||
# A hidden field with the current URL
|
||||
$var{'form.returnUrl'}
|
||||
= WebGUI::Form::hidden( $session, {
|
||||
name => 'returnUrl',
|
||||
value => $session->url->page($session->env->get("QUERY_STRING")),
|
||||
});
|
||||
|
||||
my $boxSize = $param[0];
|
||||
$boxSize = 12 unless ($boxSize);
|
||||
if (index(lc($session->env->get("HTTP_USER_AGENT")),"msie") < 0) {
|
||||
|
|
|
|||
|
|
@ -92,6 +92,12 @@ our $I18N = {
|
|||
message => q|Click here to log out.|,
|
||||
lastUpdated => 1031514049,
|
||||
},
|
||||
|
||||
'helpvar form.returnUrl' => {
|
||||
message => 'When this hidden form element is present, the user will be
|
||||
returned to the current page after they login',
|
||||
lastUpdated => 0,
|
||||
},
|
||||
};
|
||||
|
||||
1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue