добавил настройку прав пользователей
This commit is contained in:
parent
222d87d220
commit
981ad1b286
@ -3,7 +3,7 @@ import os
|
|||||||
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden
|
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
# from django.db.models import Manager
|
# from django.db.models import Manager
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required, permission_required
|
||||||
|
|
||||||
# только для тестирования!
|
# только для тестирования!
|
||||||
import requests
|
import requests
|
||||||
@ -16,24 +16,20 @@ def view_index(request):
|
|||||||
return render(request, 'index.html')
|
return render(request, 'index.html')
|
||||||
|
|
||||||
|
|
||||||
|
@permission_required(perm='view_logs', raise_exception=True)
|
||||||
def view_stats(request):
|
def view_stats(request):
|
||||||
if request.user.is_authenticated:
|
# только для тестирования!
|
||||||
# только для тестирования!
|
res = requests.get(TEST_BASE_FETCH + "?stats", headers={'Authorization': os.getenv("TEST_AUTH")})
|
||||||
res = requests.get(TEST_BASE_FETCH + "?stats", headers={'Authorization': os.getenv("TEST_AUTH")})
|
response = HttpResponse(res.content)
|
||||||
response = HttpResponse(res.content)
|
response.headers["Content-type"] = response.headers["Content-type"]
|
||||||
response.headers["Content-type"] = response.headers["Content-type"]
|
return response
|
||||||
return response
|
|
||||||
else:
|
|
||||||
return HttpResponseForbidden()
|
|
||||||
|
|
||||||
|
|
||||||
|
@permission_required(perm='view_logs', raise_exception=True)
|
||||||
def view_tank_chart(request):
|
def view_tank_chart(request):
|
||||||
if request.user.is_authenticated:
|
# только для тестирования!
|
||||||
# только для тестирования!
|
days = request.GET.get('days', '7')
|
||||||
days = request.GET.get('days', '7')
|
res = requests.get(TEST_BASE_FETCH + "?tank_chart=" + days, headers={'Authorization': os.getenv("TEST_AUTH")})
|
||||||
res = requests.get(TEST_BASE_FETCH + "?tank_chart=" + days, headers={'Authorization': os.getenv("TEST_AUTH")})
|
response = HttpResponse(res.content)
|
||||||
response = HttpResponse(res.content)
|
response.headers["Content-type"] = response.headers["Content-type"]
|
||||||
response.headers["Content-type"] = response.headers["Content-type"]
|
return response
|
||||||
return response
|
|
||||||
else:
|
|
||||||
return HttpResponseForbidden()
|
|
||||||
|
@ -2,7 +2,7 @@ from django.contrib.auth.models import AbstractBaseUser
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.core.validators import MinLengthValidator
|
from django.core.validators import MinLengthValidator
|
||||||
|
import ospaz_site.settings as settings
|
||||||
from .managers import CustomUserManager
|
from .managers import CustomUserManager
|
||||||
|
|
||||||
|
|
||||||
@ -35,7 +35,34 @@ class User(AbstractBaseUser):
|
|||||||
default_permissions = ()
|
default_permissions = ()
|
||||||
|
|
||||||
def has_perm(self, perm, obj=None):
|
def has_perm(self, perm, obj=None):
|
||||||
return self.is_superuser
|
# управления правами пользователя
|
||||||
|
secure_level = -1
|
||||||
|
if self.is_authenticated:
|
||||||
|
secure_level = 0
|
||||||
|
if self.is_superuser:
|
||||||
|
secure_level = 1
|
||||||
|
|
||||||
|
permissions = {
|
||||||
|
'view_logs': 0,
|
||||||
|
'change_users': 1,
|
||||||
|
|
||||||
|
'users.add_user': 1,
|
||||||
|
'users.change_user': 1,
|
||||||
|
'users.delete_user': 1,
|
||||||
|
'users.view_user': 1
|
||||||
|
}
|
||||||
|
if perm in permissions:
|
||||||
|
if permissions[perm] <= secure_level:
|
||||||
|
return True
|
||||||
|
elif settings.DEBUG:
|
||||||
|
print(f"User.has_perm: unknown permission - '{perm}'")
|
||||||
|
return False
|
||||||
|
|
||||||
|
def has_perms(self, perm_list, obj=None):
|
||||||
|
for p in perm_list:
|
||||||
|
if not self.has_perm(p, obj):
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
def has_module_perms(self, package_name):
|
def has_module_perms(self, package_name):
|
||||||
return self.is_superuser
|
return self.is_superuser
|
||||||
|
Loading…
x
Reference in New Issue
Block a user