@@ -32,6 +32,7 @@ use WebGUI::Workflow::Instance;
32
32
use WebGUI::Shop::AddressBook;
33
33
use WebGUI::Inbox;
34
34
use WebGUI::Friends;
35
+ use URI;
35
36
36
37
# Profile field name for the number of times the showMessageOnLogin has been
37
38
# seen.
@@ -894,12 +895,6 @@ sub login {
894
895
$u -> karma($self -> session-> setting-> get(" karmaPerLogin" )," Login" ," Just for logging in." ) if ($self -> session-> setting-> get(" useKarma" ));
895
896
$self -> _logLogin($uid ," success" );
896
897
897
- if ($self -> session-> setting-> get(' encryptLogin' )) {
898
- my $currentUrl = $self -> session-> url-> page(undef ,1);
899
- $currentUrl =~ s / ^https:/ http:/ ;
900
- $self -> session-> http-> setRedirect($currentUrl );
901
- }
902
-
903
898
# Run on login
904
899
my $command = $self -> session-> config-> get(" runOnLogin" );
905
900
if ($command ne " " ) {
@@ -927,6 +922,11 @@ sub login {
927
922
$self -> session-> http-> setRedirect($self -> session-> setting-> get(" redirectAfterLoginUrl" ));
928
923
$self -> session-> scratch-> delete (" redirectAfterLogin" );
929
924
}
925
+ elsif ($self -> session-> setting-> get(' encryptLogin' )) {
926
+ my $currentUrl = $self -> session-> url-> page(undef ,1);
927
+ $currentUrl =~ s / ^https:/ http:/ ;
928
+ $self -> session-> http-> setRedirect($currentUrl );
929
+ }
930
930
931
931
# Get open version tag. This is needed if we want
932
932
# to reclaim a version right after login (singlePerUser and siteWide mode)
@@ -1100,20 +1100,26 @@ sub showMessageOnLogin {
1100
1100
1101
1101
# Add the link to continue
1102
1102
my $session = $self -> session;
1103
- $session -> log -> warn (" returnUrl: >" .$self -> session-> form-> get( ' returnUrl' )." <" );
1104
- $session -> log -> warn (" redirectAfterLoginUrl: >" .$self -> session-> form-> get( ' returnUrl' )." <" );
1105
- my $redirectUrl = $self -> session-> form-> get( ' returnUrl' )
1106
- || $self -> session-> setting-> get(" redirectAfterLoginUrl" )
1107
- || $self -> session-> scratch-> get( ' redirectAfterLogin' )
1108
- || $self -> session-> url-> getBackToSiteURL
1103
+ my $redirectUrl = $session -> form-> get( ' returnUrl' )
1104
+ || $session -> setting-> get(" redirectAfterLoginUrl" )
1105
+ || $session -> scratch-> get( ' redirectAfterLogin' )
1106
+ || $session -> url-> getBackToSiteURL
1109
1107
;
1110
1108
1109
+ if ($session -> setting-> get(' encryptLogin' ) && ( ! $redirectUrl =~ / ^http/ )) {
1110
+ # #A scheme-less URL has been supplied. We need to make it an absolute one
1111
+ # #with a non-encrypted scheme. Otherwise the user will stay in SSL mode.
1112
+ # #We assume that the user put the gateway URL into their URL.
1113
+ my $uri = URI-> new_abs($redirectUrl , $session -> url-> getSiteURL);
1114
+ $uri -> scheme(' http' );
1115
+ $redirectUrl = $uri -> as_string;
1116
+ }
1111
1117
$output .= ' <p><a href="' . $redirectUrl . ' ">' . $i18n -> get( ' showMessageOnLogin return' )
1112
1118
. ' </a></p>'
1113
1119
;
1114
1120
1115
1121
# No matter what, we won't be redirecting after this
1116
- $self -> session-> scratch-> delete ( ' redirectAfterLogin' );
1122
+ $session -> scratch-> delete ( ' redirectAfterLogin' );
1117
1123
1118
1124
return $output ;
1119
1125
}
0 commit comments