summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kanat-Alexander <mkanat@bugzilla.org>2010-03-24 00:08:48 +0100
committerMax Kanat-Alexander <mkanat@bugzilla.org>2010-03-24 00:08:48 +0100
commitccb36aaa7adc9d07d74dd5c2e64763cc8749cf4c (patch)
treeea393c1908bee42b801e1a4cbd7df7ea64ee7263
parent9e572adb765cfb7d814b38ba1bf7f23c9ac47980 (diff)
downloadbugzilla-ccb36aaa7adc9d07d74dd5c2e64763cc8749cf4c.tar.gz
bugzilla-ccb36aaa7adc9d07d74dd5c2e64763cc8749cf4c.tar.xz
Bug 553770: Make the JSON-RPC WebService throw a proper error when you don't
provide login credentials on a LOGIN_REQUIRED page. (Before this, it was attempting to display the HTML login page to JSON-RPC clients.) r=dkl, a=mkanat
-rw-r--r--Bugzilla/Auth/Login/CGI.pm6
-rw-r--r--Bugzilla/WebService/Constants.pm5
-rw-r--r--template/en/default/global/user-error.html.tmpl4
3 files changed, 9 insertions, 6 deletions
diff --git a/Bugzilla/Auth/Login/CGI.pm b/Bugzilla/Auth/Login/CGI.pm
index 407582af4..8e877b951 100644
--- a/Bugzilla/Auth/Login/CGI.pm
+++ b/Bugzilla/Auth/Login/CGI.pm
@@ -57,10 +57,8 @@ sub fail_nodata {
my $cgi = Bugzilla->cgi;
my $template = Bugzilla->template;
- if (Bugzilla->error_mode == Bugzilla::Constants::ERROR_MODE_DIE_SOAP_FAULT) {
- die SOAP::Fault
- ->faultcode(ERROR_AUTH_NODATA)
- ->faultstring('Login Required');
+ if (Bugzilla->usage_mode != USAGE_MODE_BROWSER) {
+ ThrowUserError('login_required');
}
print $cgi->header();
diff --git a/Bugzilla/WebService/Constants.pm b/Bugzilla/WebService/Constants.pm
index a51389faa..c7c52fece 100644
--- a/Bugzilla/WebService/Constants.pm
+++ b/Bugzilla/WebService/Constants.pm
@@ -24,7 +24,6 @@ our @EXPORT = qw(
WS_ERROR_CODE
ERROR_UNKNOWN_FATAL
ERROR_UNKNOWN_TRANSIENT
- ERROR_AUTH_NODATA
WS_DISPATCH
);
@@ -99,6 +98,9 @@ use constant WS_ERROR_CODE => {
extern_id_conflict => -303,
auth_failure => 304,
+ # Except, historically, AUTH_NODATA, which is 410.
+ login_required => 410,
+
# User errors are 500-600.
account_exists => 500,
illegal_email_address => 501,
@@ -120,7 +122,6 @@ use constant WS_ERROR_CODE => {
use constant ERROR_UNKNOWN_FATAL => -32000;
use constant ERROR_UNKNOWN_TRANSIENT => 32000;
-use constant ERROR_AUTH_NODATA => 410;
use constant ERROR_GENERAL => 999;
sub WS_DISPATCH {
diff --git a/template/en/default/global/user-error.html.tmpl b/template/en/default/global/user-error.html.tmpl
index 6bf904a94..4b1a82be6 100644
--- a/template/en/default/global/user-error.html.tmpl
+++ b/template/en/default/global/user-error.html.tmpl
@@ -1012,6 +1012,10 @@
You can't use %user% without being logged in, because %user% refers
to your login name, which we don't know.
+ [% ELSIF error == "login_required" %]
+ [%# Used for non-web-based LOGIN_REQUIRED situations. %]
+ You must log in before using this part of [% terms.Bugzilla %].
+
[% ELSIF error == "migrate_config_created" %]
The file <kbd>[% file FILTER html %]</kbd> contains configuration
variables that must be set before continuing with the migration.