show current (maybe anonymous) user and their permissions

This commit is contained in:
Laura Klünder 2017-12-04 16:11:42 +01:00
parent af8b48518b
commit d4a0a9b7dd
6 changed files with 55 additions and 9 deletions

View file

@ -27,6 +27,7 @@ from c3nav.mapdata.models.locations import (Location, LocationGroupCategory, Loc
from c3nav.mapdata.utils.locations import (get_location_by_id_for_request, get_location_by_slug_for_request,
searchable_locations_for_request, visible_locations_for_request)
from c3nav.mapdata.utils.models import get_submodels
from c3nav.mapdata.utils.user import get_user_data
def optimize_query(qs):
@ -378,3 +379,9 @@ class SourceViewSet(MapdataViewSet):
class AccessRestrictionViewSet(MapdataViewSet):
queryset = AccessRestriction.objects.all()
class UserViewSet(MapdataViewSet):
@list_route(methods=['get'])
def current(self, request, key=None):
return Response(get_user_data(request))

View file

@ -0,0 +1,26 @@
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ungettext_lazy
from c3nav.mapdata.models.access import AccessPermission
def get_user_data(request):
permissions = AccessPermission.get_for_request(request)
result = {
'logged_in': bool(request.user.is_authenticated),
}
if permissions:
result.update({
'title': _('not logged in'),
'subtitle': ungettext_lazy('%d area unlocked', '%d areas unlocked', len(permissions)) % len(permissions),
'permissions': tuple(permissions),
})
else:
result.update({
'title': _('Login'),
'subtitle': None,
'permissions': (),
})
if request.user.is_authenticated:
result['title'] = request.user.username
return result