diff options
| author | Andreas Brachold <vdr07@deltab.de> | 2009-11-07 18:39:52 +0000 |
|---|---|---|
| committer | Andreas Brachold <vdr07@deltab.de> | 2009-11-07 18:39:52 +0000 |
| commit | adb3bbe0f05f7df75f8e5563674745294ef8d352 (patch) | |
| tree | 9400a204131cce0c7fff7a93921aac1b1d38e0f4 /lib/XXV/OUTPUT | |
| parent | 1914f4cfecadfb25b61e7bae744762d835c7fefe (diff) | |
| download | xxv-adb3bbe0f05f7df75f8e5563674745294ef8d352.tar.gz xxv-adb3bbe0f05f7df75f8e5563674745294ef8d352.tar.bz2 | |
* Support form based login using cookies/sessions REQUEST[004763]
Diffstat (limited to 'lib/XXV/OUTPUT')
| -rw-r--r-- | lib/XXV/OUTPUT/Ajax.pm | 7 | ||||
| -rw-r--r-- | lib/XXV/OUTPUT/Html.pm | 25 | ||||
| -rw-r--r-- | lib/XXV/OUTPUT/Wml.pm | 7 |
3 files changed, 38 insertions, 1 deletions
diff --git a/lib/XXV/OUTPUT/Ajax.pm b/lib/XXV/OUTPUT/Ajax.pm index 48ed4bf..1c873c1 100644 --- a/lib/XXV/OUTPUT/Ajax.pm +++ b/lib/XXV/OUTPUT/Ajax.pm @@ -238,6 +238,13 @@ sub header { $arg->{'Cache-Control'} = 'no-cache, must-revalidate' if(!defined $arg->{'Cache-Control'}); $arg->{'Pragma'} = 'no-cache' if(!defined $arg->{'Pragma'}); + if($self->{USER} && $self->{USER}->{sid}) { + $arg->{'cookie'} = $self->{cgi}->cookie({ + "name" => "sid", + "value" => $self->{USER}->{sid}, + "expires" => "+4h"}); + } + $self->{header} = 200; return $self->{cgi}->header( -type => $typ, diff --git a/lib/XXV/OUTPUT/Html.pm b/lib/XXV/OUTPUT/Html.pm index 47b0a3c..7ad6e64 100644 --- a/lib/XXV/OUTPUT/Html.pm +++ b/lib/XXV/OUTPUT/Html.pm @@ -195,6 +195,7 @@ sub parseTemplateFile { verbose => $self->{debug}, user => $self->{USER}->{Name}, charset => $self->{charset}, + skin => $self->{SkinName}, # query the current locale locale => main::getGeneralConfig->{Language}, allow => sub{ @@ -386,6 +387,13 @@ sub header { $arg->{'Pragma'} = 'no-cache' unless(defined $arg->{'Pragma'}); } + if($self->{USER} && $self->{USER}->{sid}) { + $arg->{'cookie'} = $self->{cgi}->cookie({ + "name" => "sid", + "value" => $self->{USER}->{sid}, + "expires" => "+4h"}); + } + $self->{header} = 200; return $self->{cgi}->header( -type => $typ, @@ -432,6 +440,13 @@ sub statusmsg { my $arg = {}; + if($self->{USER} && $self->{USER}->{sid}) { + $arg->{'cookie'} = $self->{cgi}->cookie({ + "name" => "sid", + "value" => $self->{USER}->{sid}, + "expires" => "+4h"}); + } + $arg->{'Location'} = $msg if($state == 301); @@ -465,7 +480,14 @@ sub login { my $self = shift || return error('No object defined!'); my $msg = shift || ''; - $self->statusmsg(401,$msg,gettext("Authorization required")); + if(-e sprintf('%s/login.tmpl', $self->{Skin})) { + $self->{nopack} = 1; + $self->{call} = 'login'; + my $params = {}; + $self->out( $self->parseTemplateFile("index", {}, $params, $self->{call})); + } else { + $self->statusmsg(401,$msg,gettext("Authorization required")); + } } # ------------------ @@ -1031,6 +1053,7 @@ sub setSkin { my $self = shift || return error('No object defined!'); my $name = shift || return error ('No skin defined!'); + $self->{SkinName} = $name; $self->{Skin} = sprintf('%s/%s', $self->{htmdir}, $name); return $self->{Skin}; } diff --git a/lib/XXV/OUTPUT/Wml.pm b/lib/XXV/OUTPUT/Wml.pm index 2168737..4509639 100644 --- a/lib/XXV/OUTPUT/Wml.pm +++ b/lib/XXV/OUTPUT/Wml.pm @@ -201,6 +201,13 @@ sub header { my $typ = shift || return error ('No Type!' ); my $arg = shift || {}; + if($self->{USER} && $self->{USER}->{sid}) { + $arg->{'cookie'} = $self->{cgi}->cookie({ + "name" => "sid", + "value" => $self->{USER}->{sid}, + "expires" => "+4h"}); + } + $self->{header} = 200; return $self->{cgi}->header( -type => $typ, |
