1010from django .utils .translation import gettext_lazy as _
1111from django .utils .html import format_html
1212from django .conf import settings
13- from django .http .response import HttpResponse
13+ from django .http .response import HttpResponse , HttpResponseForbidden
1414from adminlteui .widgets import AdminlteSelect
1515from treebeard .admin import TreeAdmin
1616from treebeard .forms import movenodeform_factory
@@ -144,6 +144,11 @@ def get_urls(self):
144144 return urls + base_urls
145145
146146 def general_option_view (self , request ):
147+ if request .user .has_perm ('django_admin_settings.add_options' ) is False \
148+ and request .user .has_perm (
149+ 'django_admin_settings.change_options' ) is False :
150+ return HttpResponseForbidden (format_html ('<h1>403 Forbidden</h1>' ))
151+
147152 context = dict (
148153 self .admin_site .each_context (request ),
149154 )
@@ -230,6 +235,8 @@ def get_urls(self):
230235 return urls + base_urls
231236
232237 def exchange_menu_view (self , request ):
238+ if request .user .has_perm ('django_admin_settings.view_menu' ) is False :
239+ return HttpResponseForbidden (format_html ('<h1>403 Forbidden</h1>' ))
233240 if request .is_ajax ():
234241 response_data = dict ()
235242 response_data ['message' ] = 'success'
@@ -244,12 +251,14 @@ def exchange_menu_view(self, request):
244251 if not use_custom_menu or use_custom_menu .option_value == '0' :
245252 use_custom_menu .option_value = '1'
246253 use_custom_menu .save ()
247- messages .add_message (request , messages .SUCCESS , _ ('Menu exchanged, current is `custom menu`.' ))
254+ messages .add_message (request , messages .SUCCESS , _ (
255+ 'Menu exchanged, current is `custom menu`.' ))
248256
249257 else :
250258 use_custom_menu .option_value = '0'
251259 use_custom_menu .save ()
252- messages .add_message (request , messages .SUCCESS , _ ('Menu exchanged, current is `system menu`.' ))
260+ messages .add_message (request , messages .SUCCESS , _ (
261+ 'Menu exchanged, current is `system menu`.' ))
253262 return HttpResponse (json .dumps (response_data ),
254263 content_type = "application/json,charset=utf-8" )
255264 return HttpResponse ('method not allowed.' )
0 commit comments