mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-03-11 09:04:54 +00:00
context_processor: Cache whether user is admin (Closes: #781)
This commit is contained in:
parent
0adfae26d8
commit
6a53dd015e
@ -43,5 +43,5 @@ def common(request):
|
||||
'submenu': cfg.main_menu.active_item(request),
|
||||
'active_menu_urls': active_menu_urls,
|
||||
'box_name': _(cfg.box_name),
|
||||
'user_is_admin': is_user_admin(request.user)
|
||||
'user_is_admin': is_user_admin(request, True)
|
||||
}
|
||||
|
||||
@ -102,5 +102,5 @@ class AdminRequiredMiddleware(object):
|
||||
hasattr(view_func, 'IS_NON_ADMIN'):
|
||||
return
|
||||
|
||||
if not is_user_admin(request.user):
|
||||
if not is_user_admin(request):
|
||||
raise PermissionDenied
|
||||
|
||||
@ -171,7 +171,7 @@ class UserUpdateForm(ValidNewUsernameCheckMixin, forms.ModelForm):
|
||||
|
||||
super(UserUpdateForm, self).__init__(*args, **kwargs)
|
||||
|
||||
if not is_user_admin(request.user):
|
||||
if not is_user_admin(request):
|
||||
self.fields['is_active'].widget = forms.HiddenInput()
|
||||
self.fields['groups'].disabled = True
|
||||
|
||||
|
||||
@ -85,7 +85,7 @@ class UserUpdate(ContextMixin, SuccessMessageMixin, UpdateView):
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
"""Handle a request and return a HTTP response."""
|
||||
if self.request.user.get_username() != self.kwargs['slug'] \
|
||||
and not is_user_admin(self.request.user):
|
||||
and not is_user_admin(self.request):
|
||||
raise PermissionDenied
|
||||
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
@ -156,7 +156,7 @@ class UserChangePassword(ContextMixin, SuccessMessageMixin, FormView):
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
"""Handle a request and return a HTTP response."""
|
||||
if self.request.user.get_username() != self.kwargs['slug'] \
|
||||
and not is_user_admin(self.request.user):
|
||||
and not is_user_admin(self.request):
|
||||
raise PermissionDenied
|
||||
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
@ -52,6 +52,14 @@ def non_admin_view(func):
|
||||
return func
|
||||
|
||||
|
||||
def is_user_admin(user):
|
||||
def is_user_admin(request, cached=False):
|
||||
"""Return whether user is an administrator."""
|
||||
return user.groups.filter(name='admin').exists()
|
||||
if not request.user.is_authenticated():
|
||||
return False
|
||||
|
||||
if 'cache_user_is_admin' in request.session and cached:
|
||||
return request.session['cache_user_is_admin']
|
||||
|
||||
user_is_admin = request.user.groups.filter(name='admin').exists()
|
||||
request.session['cache_user_is_admin'] = user_is_admin
|
||||
return user_is_admin
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user