Для начала, расширь модель юзера, чтобы не костылить всякими там таблицами typeUser:
1) В основном app'е (у меня это обычно core) создай модель User, унаследованную от AbstractUser:
from django.db import models
from django.contrib.auth.models import AbstractUser
# Это лучше перенести в отдельный файл consts.py
USER_ADMIN = 'adm'
USER_MANAGER = 'mng'
USER_VASYA = 'vas'
USER_TYPES = (
(USER_ADMIN, 'Администратор'),
(USER_MANAGER, 'Менеджер'),
(USER_VASYA, 'Вася'),
)
class User(AbstractUser):
type = models.CharField(max_length=3, choices=USER_TYPES)
class Meta(AbstractUser.Meta):
swappable = 'AUTH_USER_MODEL'
2) В settings.py добавить:
AUTH_USER_MODEL = 'core.User' # Где core - твой app
3) makemigrations и migrate
Если ещё не добрался до Class Based Views, то самое время.
Делаешь такой, например, миксин:
from django.core.exceptions import PermissionDenied
# тут импорт USER_VASYA
class VasyaRequiredMixin(object):
def dispatch(self, request, *args, **kwargs):
if request.user.type != USER_VASYA:
raise PermissionDenied
return super(VasyaRequiredMixin, self).dispatch(request, *args, **kwargs)
И все вьюхи, которые доступны только Васе наследуешь ещё и от этого миксина, например так:
class VasyaView(VasyaRequiredMixin, View):
def get(self, request, *args, **kwargs):
return HttpResponse('Vasya molodec')