X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/21add7ffa87a5e622d18bdbb24c638c15bdb3800..4e3a2a370cdc431091b32e8d5fa03c8718e6ea4a:/IkiWiki/CGI.pm

diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm
index 81cb42d13..af58d7cb5 100644
--- a/IkiWiki/CGI.pm
+++ b/IkiWiki/CGI.pm
@@ -142,7 +142,12 @@ sub cgi_postsignin ($$) {
 		exit;
 	}
 	else {
-		error(gettext("login failed, perhaps you need to turn on cookies?"));
+		if ($config{sslcookie} && ! $q->https()) {
+			error(gettext("probable misconfiguration: sslcookie is set, but you are attempting to login via http, not https"));
+		}
+		else {
+			error(gettext("login failed, perhaps you need to turn on cookies?"));
+		}
 	}
 }
 
@@ -203,25 +208,9 @@ sub cgi_prefs ($$) {
 	
 	my $user_name=$session->param("name");
 
-	# XXX deprecated, should be removed eventually
-	$form->field(name => "banned_users", size => 50, fieldset => "admin");
-	if (! is_admin($user_name)) {
-		$form->field(name => "banned_users", type => "hidden");
-	}
 	if (! $form->submitted) {
 		$form->field(name => "email", force => 1,
 			value => userinfo_get($user_name, "email"));
-		if (is_admin($user_name)) {
-			my $value=join(" ", get_banned_users());
-			if (length $value) {
-				$form->field(name => "banned_users", force => 1,
-					value => join(" ", get_banned_users()),
-					comment => "deprecated; please move to banned_users in setup file");
-			}
-			else {
-				$form->field(name => "banned_users", type => "hidden");
-			}
-		}
 	}
 	
 	if ($form->submitted eq 'Logout') {
@@ -239,38 +228,38 @@ sub cgi_prefs ($$) {
 				error("failed to set email");
 		}
 
-		# XXX deprecated, should be removed eventually
-		if (is_admin($user_name)) {
-			set_banned_users(grep { ! is_admin($_) }
-					split(' ',
-						$form->field("banned_users"))) ||
-				error("failed saving changes");
-			if (! length $form->field("banned_users")) {
-				$form->field(name => "banned_users", type => "hidden");
-			}
-		}
-
 		$form->text(gettext("Preferences saved."));
 	}
 	
 	showform($form, $buttons, $session, $q);
 }
 
+sub cgi_custom_failure ($$) {
+	my $header=shift;
+	my $message=shift;
+
+	print $header;
+	print $message;
+
+	# Internet Explod^Hrer won't show custom 404 responses
+	# unless they're >= 512 bytes
+	print ' ' x 512;
+
+	exit;
+}
+
 sub check_banned ($$) {
 	my $q=shift;
 	my $session=shift;
 
 	my $name=$session->param("name");
 	if (defined $name) {
-		# XXX banned in userinfo is deprecated, should be removed
-		# eventually, and only banned_users be checked.
-		if (userinfo_get($session->param("name"), "banned") ||
-		    grep { $name eq $_ } @{$config{banned_users}}) {
-			print $q->header(-status => "403 Forbidden");
+		if (grep { $name eq $_ } @{$config{banned_users}}) {
 			$session->delete();
-			print gettext("You are banned.");
 			cgi_savesession($session);
-			exit;
+			cgi_custom_failure(
+				$q->header(-status => "403 Forbidden"),
+				gettext("You are banned."));
 		}
 	}
 }
@@ -347,7 +336,7 @@ sub cgi (;$$) {
 			error("\"do\" parameter missing");
 		}
 	}
-	
+
 	# Need to lock the wiki before getting a session.
 	lockwiki();
 	loadindex();