From: David Lawrence Date: Wed, 12 Oct 2016 21:45:15 +0000 (+0000) Subject: Bug 1307003 - Add whoami endpoint X-Git-Tag: release-5.1.2~42 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=31651c978e921e9e46cddd455f103fcf4b1a332a;p=thirdparty%2Fbugzilla.git Bug 1307003 - Add whoami endpoint r=dylan --- diff --git a/Bugzilla/API/1_0/Resource/User.pm b/Bugzilla/API/1_0/Resource/User.pm index 101a70529a..e049f7f38b 100644 --- a/Bugzilla/API/1_0/Resource/User.pm +++ b/Bugzilla/API/1_0/Resource/User.pm @@ -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 + +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 (none) + +=item B + +On success, a hash containing information about the logged in user. + +=over + +=item id + +C 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 The actual name of the user. May be blank. + +=item name + +C The login name of the user. + +=back + +=item B + +=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 =over diff --git a/Bugzilla/WebService/User.pm b/Bugzilla/WebService/User.pm index d69df50565..602e7e2cc3 100644 --- a/Bugzilla/WebService/User.pm +++ b/Bugzilla/WebService/User.pm @@ -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 + +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 (none) + +=item B + +On success, a hash containing information about the logged in user. + +=over + +=item id + +C 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 The actual name of the user. May be blank. + +=item name + +C The login name of the user. + +=back + +=item B + +=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 diff --git a/docs/en/rst/api/core/v1/user.rst b/docs/en/rst/api/core/v1/user.rst index 90728287e1..3e3f64bd6a 100644 --- a/docs/en/rst/api/core/v1/user.rst +++ b/docs/en/rst/api/core/v1/user.rst @@ -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. +========== ====== =====================================================