Add common get_user_info() method for all API views

This commit is contained in:
Lance Edgar 2020-02-11 13:31:02 -06:00
parent a6f80e07e0
commit c95008703c
2 changed files with 67 additions and 18 deletions
tailbone/api

View file

@ -35,17 +35,6 @@ from tailbone.auth import login_user, logout_user
class AuthenticationView(APIView):
def user_info(self, user):
return {
'ok': True,
'user': {
'uuid': user.uuid,
'username': user.username,
'display_name': user.display_name,
'short_name': user.get_short_name(),
},
}
@api
def check_session(self):
"""
@ -55,9 +44,7 @@ class AuthenticationView(APIView):
"""
data = {'ok': True}
if self.request.user:
data = self.user_info(self.request.user)
data['user']['is_admin'] = self.request.is_admin
data['user']['is_root'] = self.request.is_root
data['user'] = self.get_user_info(self.request.user)
data['permissions'] = list(self.request.tailbone_cached_permissions)
@ -94,7 +81,10 @@ class AuthenticationView(APIView):
return {'error': error}
login_user(self.request, user)
return self.user_info(user)
return {
'ok': True,
'user': self.get_user_info(user),
}
def authenticate_user(self, username, password):
return authenticate_user(Session(), username, password)
@ -130,7 +120,10 @@ class AuthenticationView(APIView):
raise self.forbidden()
self.request.user.record_event(self.enum.USER_EVENT_BECOME_ROOT)
self.request.session['is_root'] = True
return self.user_info(self.request.user)
return {
'ok': True,
'user': self.get_user_info(self.request.user),
}
@api
def stop_root(self):
@ -141,7 +134,10 @@ class AuthenticationView(APIView):
raise self.forbidden()
self.request.user.record_event(self.enum.USER_EVENT_STOP_ROOT)
self.request.session['is_root'] = False
return self.user_info(self.request.user)
return {
'ok': True,
'user': self.get_user_info(self.request.user),
}
@classmethod
def defaults(cls, config):