From: Max Kanat-Alexander Date: Tue, 23 Mar 2010 23:10:23 +0000 (-0700) Subject: Bug 553770: Make the JSON-RPC WebService throw a proper error when you don't X-Git-Tag: bugzilla-3.6~40 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=64f30b963b1c3d6cc8ab880587e8f6a63ef698f2;p=thirdparty%2Fbugzilla.git 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 --- diff --git a/Bugzilla/Auth/Login/CGI.pm b/Bugzilla/Auth/Login/CGI.pm index 407582af4f..8e877b9513 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 a51389faa8..c7c52fecef 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 9e58fb35d6..d5106abebd 100644 --- a/template/en/default/global/user-error.html.tmpl +++ b/template/en/default/global/user-error.html.tmpl @@ -1017,6 +1017,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 [% file FILTER html %] contains configuration variables that must be set before continuing with the migration.