]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 1001462 - Bug.search causes error when using simple token auth and specifying...
authorDavid Lawrence <dkl@mozilla.com>
Mon, 12 May 2014 14:36:59 +0000 (14:36 +0000)
committerDavid Lawrence <dkl@mozilla.com>
Mon, 12 May 2014 14:36:59 +0000 (14:36 +0000)
r/a=glob

Bugzilla/WebService/Server/XMLRPC.pm
Bugzilla/WebService/User.pm
Bugzilla/WebService/Util.pm

index 40c66a8f95b88a0539d761f7bad7901d812d94d1..48ab27a5e071380a9e1c292f7f300e2c612b68ab 100644 (file)
@@ -115,6 +115,7 @@ our @ISA = qw(XMLRPC::Deserializer);
 
 use Bugzilla::Error;
 use Bugzilla::WebService::Constants qw(XMLRPC_CONTENT_TYPE_WHITELIST);
+use Bugzilla::WebService::Util qw(fix_credentials);
 use Scalar::Util qw(tainted);
 
 sub deserialize {
@@ -138,6 +139,11 @@ sub deserialize {
     my $params = $som->paramsin;
     # This allows positional parameters for Testopia.
     $params = {} if ref $params ne 'HASH';
+
+    # Update the params to allow for several convenience key/values
+    # use for authentication
+    fix_credentials($params);
+
     Bugzilla->input_params($params);
     return $som;
 }
index f8358f78d6c065227997c88cd81b346e4755a179..112d336d7f788c86aa36325c44decb337c3a2b08 100644 (file)
@@ -54,16 +54,10 @@ sub login {
 
     # Username and password params are required 
     foreach my $param ("login", "password") {
-        defined $params->{$param} 
+        (!defined $params->{$param} && !defined $params->{'Bugzilla_' . $param})
             || ThrowCodeError('param_required', { param => $param });
     }
 
-    # Make sure the CGI user info class works if necessary.
-    my $input_params = Bugzilla->input_params;
-    $input_params->{'Bugzilla_login'} =  $params->{login};
-    $input_params->{'Bugzilla_password'} = $params->{password};
-    $input_params->{'Bugzilla_restrictlogin'} = $params->{restrict_login};
-
     my $user = Bugzilla->login();
 
     my $result = { id => $self->type('int', $user->id) };
index bba6122e590655bd2e265d238b5dd0f9f5b3796a..8e66a9b53b22d3f5a012b13a598b0ef2a9b03750 100644 (file)
@@ -261,18 +261,17 @@ sub params_to_objects {
 
 sub fix_credentials {
     my ($params) = @_;
-    # Allow user to pass in login=foo&password=bar as a convenience
-    # even if not calling GET /login. We also do not delete them as
-    # GET /login requires "login" and "password".
-    if (exists $params->{'login'} && exists $params->{'password'}) {
-        $params->{'Bugzilla_login'}    = $params->{'login'};
-        $params->{'Bugzilla_password'} = $params->{'password'};
-    }
-    # Allow user to pass token=12345678 as a convenience which becomes
-    # "Bugzilla_token" which is what the auth code looks for.
-    if (exists $params->{'token'}) {
-        $params->{'Bugzilla_token'} = $params->{'token'};
-    }
+
+    # Allow user to pass in login, password, restrict_login, and
+    # token as short-cuts to the longer versions.
+    $params->{'Bugzilla_login'} = delete $params->{'login'}
+        if exists $params->{'login'};
+    $params->{'Bugzilla_password'} = delete $params->{'password'}
+        if exists $params->{'password'};
+    $params->{'Bugzilla_restrictlogin'} = delete $params->{'restrict_login'}
+        if exists $params->{'restrict_login'};
+    $params->{'Bugzilla_token'} = delete $params->{'token'}
+        if exists $params->{'token'};
 
     # Allow extensions to modify the credential data before login
     Bugzilla::Hook::process('webservice_fix_credentials', { params => $params });