Commit ccb36aaa authored by Max Kanat-Alexander's avatar Max Kanat-Alexander

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
parent 9e572adb
...@@ -57,10 +57,8 @@ sub fail_nodata { ...@@ -57,10 +57,8 @@ sub fail_nodata {
my $cgi = Bugzilla->cgi; my $cgi = Bugzilla->cgi;
my $template = Bugzilla->template; my $template = Bugzilla->template;
if (Bugzilla->error_mode == Bugzilla::Constants::ERROR_MODE_DIE_SOAP_FAULT) { if (Bugzilla->usage_mode != USAGE_MODE_BROWSER) {
die SOAP::Fault ThrowUserError('login_required');
->faultcode(ERROR_AUTH_NODATA)
->faultstring('Login Required');
} }
print $cgi->header(); print $cgi->header();
......
...@@ -24,7 +24,6 @@ our @EXPORT = qw( ...@@ -24,7 +24,6 @@ our @EXPORT = qw(
WS_ERROR_CODE WS_ERROR_CODE
ERROR_UNKNOWN_FATAL ERROR_UNKNOWN_FATAL
ERROR_UNKNOWN_TRANSIENT ERROR_UNKNOWN_TRANSIENT
ERROR_AUTH_NODATA
WS_DISPATCH WS_DISPATCH
); );
...@@ -99,6 +98,9 @@ use constant WS_ERROR_CODE => { ...@@ -99,6 +98,9 @@ use constant WS_ERROR_CODE => {
extern_id_conflict => -303, extern_id_conflict => -303,
auth_failure => 304, auth_failure => 304,
# Except, historically, AUTH_NODATA, which is 410.
login_required => 410,
# User errors are 500-600. # User errors are 500-600.
account_exists => 500, account_exists => 500,
illegal_email_address => 501, illegal_email_address => 501,
...@@ -120,7 +122,6 @@ use constant WS_ERROR_CODE => { ...@@ -120,7 +122,6 @@ use constant WS_ERROR_CODE => {
use constant ERROR_UNKNOWN_FATAL => -32000; use constant ERROR_UNKNOWN_FATAL => -32000;
use constant ERROR_UNKNOWN_TRANSIENT => 32000; use constant ERROR_UNKNOWN_TRANSIENT => 32000;
use constant ERROR_AUTH_NODATA => 410;
use constant ERROR_GENERAL => 999; use constant ERROR_GENERAL => 999;
sub WS_DISPATCH { sub WS_DISPATCH {
......
...@@ -1012,6 +1012,10 @@ ...@@ -1012,6 +1012,10 @@
You can't use %user% without being logged in, because %user% refers You can't use %user% without being logged in, because %user% refers
to your login name, which we don't know. 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" %] [% ELSIF error == "migrate_config_created" %]
The file <kbd>[% file FILTER html %]</kbd> contains configuration The file <kbd>[% file FILTER html %]</kbd> contains configuration
variables that must be set before continuing with the migration. variables that must be set before continuing with the migration.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment