mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-08-26 12:46:08 +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),
|
'submenu': cfg.main_menu.active_item(request),
|
||||||
'active_menu_urls': active_menu_urls,
|
'active_menu_urls': active_menu_urls,
|
||||||
'box_name': _(cfg.box_name),
|
'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'):
|
hasattr(view_func, 'IS_NON_ADMIN'):
|
||||||
return
|
return
|
||||||
|
|
||||||
if not is_user_admin(request.user):
|
if not is_user_admin(request):
|
||||||
raise PermissionDenied
|
raise PermissionDenied
|
||||||
|
|||||||
@ -171,7 +171,7 @@ class UserUpdateForm(ValidNewUsernameCheckMixin, forms.ModelForm):
|
|||||||
|
|
||||||
super(UserUpdateForm, self).__init__(*args, **kwargs)
|
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['is_active'].widget = forms.HiddenInput()
|
||||||
self.fields['groups'].disabled = True
|
self.fields['groups'].disabled = True
|
||||||
|
|
||||||
|
|||||||
@ -85,7 +85,7 @@ class UserUpdate(ContextMixin, SuccessMessageMixin, UpdateView):
|
|||||||
def dispatch(self, request, *args, **kwargs):
|
def dispatch(self, request, *args, **kwargs):
|
||||||
"""Handle a request and return a HTTP response."""
|
"""Handle a request and return a HTTP response."""
|
||||||
if self.request.user.get_username() != self.kwargs['slug'] \
|
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
|
raise PermissionDenied
|
||||||
|
|
||||||
return super().dispatch(request, *args, **kwargs)
|
return super().dispatch(request, *args, **kwargs)
|
||||||
@ -156,7 +156,7 @@ class UserChangePassword(ContextMixin, SuccessMessageMixin, FormView):
|
|||||||
def dispatch(self, request, *args, **kwargs):
|
def dispatch(self, request, *args, **kwargs):
|
||||||
"""Handle a request and return a HTTP response."""
|
"""Handle a request and return a HTTP response."""
|
||||||
if self.request.user.get_username() != self.kwargs['slug'] \
|
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
|
raise PermissionDenied
|
||||||
|
|
||||||
return super().dispatch(request, *args, **kwargs)
|
return super().dispatch(request, *args, **kwargs)
|
||||||
|
|||||||
@ -52,6 +52,14 @@ def non_admin_view(func):
|
|||||||
return func
|
return func
|
||||||
|
|
||||||
|
|
||||||
def is_user_admin(user):
|
def is_user_admin(request, cached=False):
|
||||||
"""Return whether user is an administrator."""
|
"""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