]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 1307003 - Add whoami endpoint
authorDavid Lawrence <dkl@mozilla.com>
Wed, 12 Oct 2016 21:45:15 +0000 (21:45 +0000)
committerDavid Lawrence <dkl@mozilla.com>
Wed, 12 Oct 2016 21:45:15 +0000 (21:45 +0000)
r=dylan

Bugzilla/API/1_0/Resource/User.pm
Bugzilla/WebService/User.pm
docs/en/rst/api/core/v1/user.rst

index 101a70529a06b5b98b3bfde2de57d7970c48ce0a..e049f7f38b6c3cc638da1b72c0d88ed94bad3994 100644 (file)
@@ -40,6 +40,7 @@ use constant READ_ONLY => qw(
     login
     logout
     valid_login
+    whoami
 );
 
 use constant PUBLIC_METHODS => qw(
@@ -50,6 +51,7 @@ use constant PUBLIC_METHODS => qw(
     offer_account_by_email
     update
     valid_login
+    whoami
 );
 
 use constant MAPPED_FIELDS => {
@@ -106,6 +108,11 @@ sub REST_RESOURCES {
                     return { $param => [ $_[0] ] };
                 }
             }
+        },
+        qr{^/whoami$}, {
+            GET => {
+                method => 'whoami'
+            }
         }
     ];
     return $rest_resources;
@@ -479,6 +486,16 @@ sub _login_to_hash {
     return $item;
 }
 
+sub whoami {
+    my ($self, $params) = @_;
+    my $user = Bugzilla->login(LOGIN_REQUIRED);
+    return filter $params, {
+        id        => as_int($user->id),
+        real_name => as_string($user->name),
+        name      => as_login($user->login),
+    };
+}
+
 1;
 
 __END__
@@ -1155,6 +1172,61 @@ in Bugzilla B<4.4>.
 
 =back
 
+=head2 whoami
+
+=over
+
+=item B<Description>
+
+Allows for validating a user's API key, token, or username and password.
+If sucessfully authenticated, it returns simple information about the
+logged in user.
+
+=item B<Params> (none)
+
+=item B<Returns>
+
+On success, a hash containing information about the logged in user.
+
+=over
+
+=item id
+
+C<int> The unique integer ID that Bugzilla uses to represent this user.
+Even if the user's login name changes, this will not change.
+
+=item real_name
+
+C<string> The actual name of the user. May be blank.
+
+=item name
+
+C<string> The login name of the user.
+
+=back
+
+=item B<Errors>
+
+=over
+
+=item 300 (Invalid Username or Password)
+
+The username does not exist, or the password is wrong.
+
+=item 301 (Account Disabled)
+
+The account has been disabled.  A reason may be specified with the
+error.
+
+=item 305 (New Password Required)
+
+The current password is correct, but the user is asked to change
+his password.
+
+=back
+
+=back
+
 =head1 B<Methods in need of POD>
 
 =over
index d69df505653f1a29ed1eb375555dca3067e7c476..602e7e2cc32640ef0d381983b7b2b59f958895ce 100644 (file)
@@ -40,6 +40,7 @@ use constant PUBLIC_METHODS => qw(
     offer_account_by_email
     update
     valid_login
+    whoami
 );
 
 use constant MAPPED_FIELDS => {
@@ -428,6 +429,16 @@ sub _login_to_hash {
     return $item;
 }
 
+sub whoami {
+    my ($self, $params) = @_;
+    my $user = Bugzilla->login(LOGIN_REQUIRED);
+    return filter $params, {
+        id        => $self->type('int', $user->id),
+        real_name => $self->type('string', $user->name),
+        name      => $self->type('email', $user->login),
+    };
+}
+
 1;
 
 __END__
@@ -1130,3 +1141,58 @@ in Bugzilla B<4.4>.
 =back
 
 =back
+
+=head2 whoami
+
+=over
+
+=item B<Description>
+
+Allows for validating a user's API key, token, or username and password.
+If sucessfully authenticated, it returns simple information about the
+logged in user.
+
+=item B<Params> (none)
+
+=item B<Returns>
+
+On success, a hash containing information about the logged in user.
+
+=over
+
+=item id
+
+C<int> The unique integer ID that Bugzilla uses to represent this user.
+Even if the user's login name changes, this will not change.
+
+=item real_name
+
+C<string> The actual name of the user. May be blank.
+
+=item name
+
+C<string> The login name of the user.
+
+=back
+
+=item B<Errors>
+
+=over
+
+=item 300 (Invalid Username or Password)
+
+The username does not exist, or the password is wrong.
+
+=item 301 (Account Disabled)
+
+The account has been disabled.  A reason may be specified with the
+error.
+
+=item 305 (New Password Required)
+
+The current password is correct, but the user is asked to change
+his password.
+
+=back
+
+=back
index 90728287e15d11b2ecb64e19456aeb6a4c731dac..3e3f64bd6a6f8fcda05897560ecec0be4fd26c64 100644 (file)
@@ -429,3 +429,38 @@ querying your own account, even if you are in the editusers group.
 * 804 (Invalid Group Name)
   You passed a group name in the "groups" argument which either does not
   exist or you do not belong to it.
+
+.. _rest_user_whoami:
+
+Who Am I
+--------
+
+Allows for validating a user's API key, token, or username and password.
+If sucessfully authenticated, it returns simple information about the
+logged in user.
+
+**Request**
+
+.. code-block:: text
+
+   GET /rest/whoami
+
+**Response**
+
+.. code-block:: js
+
+   {
+     "id" : "1234",
+     "name" : "user@bugzulla.org",
+     "real_name" : "Test User",
+   }
+
+========== ======  =====================================================
+name       type    description
+========== ======  =====================================================
+id         int     The unique integer ID that Bugzilla uses to represent
+                   this user. Even if the user's login name changes,
+                   this will not change.
+real_name  string  The actual name of the user. May be blank.
+name       string  string  The login name of the user.
+========== ======  =====================================================