From a465864449c8b74b4eaef894eb9f523e274471cc Mon Sep 17 00:00:00 2001 From: JT Smith Date: Wed, 5 Jun 2002 04:48:21 +0000 Subject: [PATCH] Fixed a bug where 404 and 403 errors under mod perl would cause duplicate output. --- lib/WebGUI/Privilege.pm | 40 ++++++++++++++++++++++++++++++++++++---- lib/WebGUI/Session.pm | 10 +++++++++- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/lib/WebGUI/Privilege.pm b/lib/WebGUI/Privilege.pm index 8c3426f8f..840b686fc 100644 --- a/lib/WebGUI/Privilege.pm +++ b/lib/WebGUI/Privilege.pm @@ -20,7 +20,15 @@ use WebGUI::URL; #------------------------------------------------------------------- sub adminOnly { - $session{header}{status} = 403; + if($session{env}{MOD_PERL}) { + my $r = Apache->request; + if(defined($r)) { + $r->custom_response(403, $session{page}{url} ); + $r->status(403); + } + } else { + $session{header}{status} = 403; + } my ($output, $sth, @data); $output = '

'.WebGUI::International::get(35).'

'; $output .= WebGUI::International::get(36); @@ -81,7 +89,15 @@ sub canViewPage { #------------------------------------------------------------------- sub insufficient { - $session{header}{status} = 403; + if($session{env}{MOD_PERL}) { + my $r = Apache->request; + if(defined($r)) { + $r->custom_response(403, $session{page}{url} ); + $r->status(403); + } + } else { + $session{header}{status} = 403; + } my ($output); $output = '

'.WebGUI::International::get(37).'

'; $output .= WebGUI::International::get(38); @@ -109,7 +125,15 @@ sub isInGroup { #------------------------------------------------------------------- sub noAccess { - $session{header}{status} = 403; + if($session{env}{MOD_PERL}) { + my $r = Apache->request; + if(defined($r)) { + $r->custom_response(403, $session{page}{url} ); + $r->status(403); + } + } else { + $session{header}{status} = 403; + } my ($output); if ($session{user}{userId} <= 1) { $output = WebGUI::Operation::Account::www_displayAccount(); @@ -123,7 +147,15 @@ sub noAccess { #------------------------------------------------------------------- sub notMember { - $session{header}{status} = 403; + if($session{env}{MOD_PERL}) { + my $r = Apache->request; + if(defined($r)) { + $r->custom_response(403, $session{page}{url} ); + $r->status(403); + } + } else { + $session{header}{status} = 403; + } my ($output); $output = '

'.WebGUI::International::get(345).'

'; $output .= WebGUI::International::get(346); diff --git a/lib/WebGUI/Session.pm b/lib/WebGUI/Session.pm index a8eb74f59..77ec11957 100644 --- a/lib/WebGUI/Session.pm +++ b/lib/WebGUI/Session.pm @@ -44,7 +44,15 @@ sub _getPageInfo { ($pageId) = WebGUI::SQL->quickArray("select pageId from page where urlizedTitle='".$pageName."'",$_[1]); if ($pageId eq "") { $pageId = $_[2]; - $session{header}{status} = '404'; + if($ENV{"MOD_PERL"}) { + my $r = Apache->request; + if(defined($r)) { + $r->custom_response(404, $session{page}{url} ); + $r->status(404); + } + } else { + $session{header}{status} = '404'; + } } } else { $pageId = $session{setting}{defaultPage};