From 24dc95056151cb6f38a5c71be51a99f97c834ba1 Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Wed, 8 Mar 2017 16:20:44 +0100 Subject: [PATCH] api: expose more details of auth tokens in get_user api call. --- rhodecode/api/views/user_api.py | 1 + rhodecode/model/db.py | 23 +++++++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/rhodecode/api/views/user_api.py b/rhodecode/api/views/user_api.py index b2348570..bf013eb8 100644 --- a/rhodecode/api/views/user_api.py +++ b/rhodecode/api/views/user_api.py @@ -63,6 +63,7 @@ def get_user(request, apiuser, userid=Optional(OAttr('apiuser'))): "active": true, "admin": false, "api_keys": [ list of keys ], + "auth_tokens": [ list of tokens with details ], "email": "user@example.com", "emails": [ "user@example.com" diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py index a77a1d14..81e016b1 100644 --- a/rhodecode/model/db.py +++ b/rhodecode/model/db.py @@ -915,6 +915,7 @@ class User(Base, BaseModel): extras = { 'api_keys': [api_key_replacement], + 'auth_tokens': [api_key_replacement], 'active': user.active, 'admin': user.admin, 'extern_type': user.extern_type, @@ -927,6 +928,7 @@ class User(Base, BaseModel): if include_secrets: data['api_keys'] = user.auth_tokens + data['auth_tokens'] = user.extra_auth_tokens return data def __json__(self): @@ -985,6 +987,21 @@ class UserApiKeys(Base, BaseModel): def __unicode__(self): return u"<%s('%s')>" % (self.__class__.__name__, self.role) + def __json__(self): + data = { + 'auth_token': self.api_key, + 'role': self.role, + 'scope': self.scope_humanized, + 'expired': self.expired + } + return data + + @property + def expired(self): + if self.expires == -1: + return False + return time.time() > self.expires + @classmethod def _get_role_name(cls, role): return { @@ -995,12 +1012,6 @@ class UserApiKeys(Base, BaseModel): cls.ROLE_FEED: _('feed access'), }.get(role, role) - @property - def expired(self): - if self.expires == -1: - return False - return time.time() > self.expires - @property def role_humanized(self): return self._get_role_name(self.role)