public
Authored by
Куц Владимир
Авторизация с помощью remote_user. Связывание с учетками.
Авторизация с помощью remote_user. Связывание с учетками.
settings.py:
...
MIDDLEWARE = [
...
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.RemoteUserMiddleware',
...
]
...
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'django.contrib.auth.backends.RemoteUserBackend',
]
users/models.py
from django.db import models
from django.db.models.signals import post_save, post_delete
from django.dispatch import receiver
from django.conf import settings
from django.contrib.auth import get_user_model
class Employee(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True)
...
...
@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def assign_to_employee(sender, instance=None, created=False, **kwargs):
if created:
employee = Employee.objects.filter(ad_name=instance.username).order_by('id').last()
if employee and not employee.user:
employee.user = instance
employee.save(update_fields=['user'])
@receiver(post_save, sender=Employee)
def employee_assign_user(sender, instance=None, created=False, **kwargs):
if created:
user = get_user_model().objects.filter(username=instance.ad_name).order_by('id').last()
if user and not instance.user:
instance.user = user
instance.save(update_fields=['user'])
Please register or sign in to comment