Skip to content

Commit

Permalink
Bug 1307003 - Add whoami endpoint
Browse files Browse the repository at this point in the history
r=dylan
  • Loading branch information
dklawren committed Oct 12, 2016
1 parent ecc8545 commit 31651c9
Show file tree
Hide file tree
Showing 3 changed files with 173 additions and 0 deletions.
72 changes: 72 additions & 0 deletions Bugzilla/API/1_0/Resource/User.pm
Expand Up @@ -40,6 +40,7 @@ use constant READ_ONLY => qw(
login
logout
valid_login
whoami
);

use constant PUBLIC_METHODS => qw(
Expand All @@ -50,6 +51,7 @@ use constant PUBLIC_METHODS => qw(
offer_account_by_email
update
valid_login
whoami
);

use constant MAPPED_FIELDS => {
Expand Down Expand Up @@ -106,6 +108,11 @@ sub REST_RESOURCES {
return { $param => [ $_[0] ] };
}
}
},
qr{^/whoami$}, {
GET => {
method => 'whoami'
}
}
];
return $rest_resources;
Expand Down Expand Up @@ -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__
Expand Down Expand Up @@ -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
Expand Down
66 changes: 66 additions & 0 deletions Bugzilla/WebService/User.pm
Expand Up @@ -40,6 +40,7 @@ use constant PUBLIC_METHODS => qw(
offer_account_by_email
update
valid_login
whoami
);

use constant MAPPED_FIELDS => {
Expand Down Expand Up @@ -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__
Expand Down Expand Up @@ -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
35 changes: 35 additions & 0 deletions docs/en/rst/api/core/v1/user.rst
Expand Up @@ -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.
========== ====== =====================================================

0 comments on commit 31651c9

Please sign in to comment.