Раздельный вход для пользовательского пользователя и администратора django в Django

В настоящее время я работаю над проектом django и у меня есть пользовательская модель пользователя в моем приложении django. Пользовательская аутентификация работает отлично, но проблема, с которой я столкнулся, заключается в том, что всякий раз, когда я вхожу в учетную запись администратора на сайте администратора django, он выходит из предыдущего пользователя (допустим, user2) и администратор входит в систему.

Как я могу разделить их логин, чтобы логин администратора сайта не мешал логину моего сайта?

Вот мой код:

Пользовательская модель и ее менеджер:

from django.db import models
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager


class CustomerManager(BaseUserManager):
    def create_user(self, email, username, name, password=None):
        if not email:
            raise ValueError('Users must have an email address to register')

        if not username:
            raise ValueError('Users must have an username address to register')

        if not name:
            raise ValueError('Users must enter their name to register')

        user = self.model(
            email = self.normalize_email(email),
            username = username,
            name=name,
        )

        user.set_password(password)
        user.save(using = self._db)
        return user


    def create_superuser(self, email, username, name, password=None):
        user = self.create_user(
            email = self.normalize_email(email),
            username = username,
            name=name,
            password=password,
        )

        user.is_admin = True
        user.is_staff = True
        user.is_superuser = True
        user.save(using=self._db)
        return user



class Customer(AbstractBaseUser):
    # user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True)
    email           = models.EmailField(max_length=254, null=True, unique=True)
    username        = models.CharField(max_length=40, unique=True)
    name            = models.CharField(max_length=200)
    phone           = models.CharField(max_length=10, null=True)
    address         = models.CharField(max_length=500, null=True)
    date_joined     = models.DateTimeField(auto_now_add=True)
    last_login      = models.DateTimeField(auto_now=True)
    is_admin        = models.BooleanField(default=False)
    is_active       = models.BooleanField(default=True)
    is_staff        = models.BooleanField(default=False)
    is_superuser    = models.BooleanField(default=False)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username', 'name']

    objects = CustomerManager()

    def __str__(self):
        return self.name

    def has_perm(self, perm, obj=None):
        return self.is_admin

    def has_module_perms(self, app_label):
        return True
    

Вид входа:

def loginUser(request):
    if request.user.is_authenticated:
        return redirect('home')
        
    else:
        if request.method == 'POST':
            email = request.POST.get('email')
            password = request.POST.get('password')

            user = authenticate(request, email=email, password=password)

            if user is not None:
                login(request, user)
                return redirect('home')
            else:
                messages.info(request, 'Email or Password didn\'t match!')

        context = {}
        return render(request, 'accounts/login.html', context)

Выход Просмотр:

@login_required(login_url='login')
def logoutUser(request):
    logout(request)
    return redirect('login')

Просмотр профиля пользователя:

@login_required(login_url='login')
def userProfile(request, email):
    customer = Customer.objects.filter(email=email).first()
    context = {'customer':customer}
    return render(request, 'accounts/profile.html', context)

CreateUserForm и LoginForm:

class CreateUserForm(UserCreationForm):
    class Meta:
        model = Customer
        fields = ['username', 'email', 'name', 'password1', 'password2']
        # fields = '__all__'


class LoginForm(forms.ModelForm):
    password = forms.CharField(label='password', widget=forms.PasswordInput)

    class Meta:
        model = Customer
        fields = ['email', 'password']
    
    def clean(self):
        email = self.cleaned_data['email']
        password = self.cleaned_data['password']
        if not authenticate(email=email, password=password):
            raise forms.ValidationError('Incorrect Login')

Когда пользователь User3 вошел в систему, а admin не вошел:

enter image description here

Как только admin вошел в систему: Пользователь3 автоматически выходит из системы, а администратор входит..

enter image description here

Вернуться на верх