Получение анонимного пользователя после входа в систему через otp
Я пытаюсь аутентифицировать пользователя только через otp и без пароля. После того, как пользователь введет свой email, на него будет отправлен otp. После входа в систему у пользователя есть несколько страниц, на которые он должен перейти, и я хочу, чтобы пользователь оставался под своим логином на этих страницах. Главная страница после входа получает данные пользователя, но не после того, как пользователь переходит на любую другую страницу.
Например, если пользователь нажимает Add Owner после входа в систему, request.user возвращает AnonmousUser.
models.py
class S_Society_Association_Master(models.Model):
society = models.ForeignKey(S_Society_Master, default=0, on_delete=models.CASCADE)
member_name = models.CharField(verbose_name = "Member Name", max_length=100)
member_contact_number = models.CharField(verbose_name="Phone Number", max_length=15)
otp = models.CharField(max_length=6, blank=False, default=0) # For HOTP Verification
member_role = models.CharField(verbose_name="Member's Role", max_length=100,
choices=[("P", "President"), ("T", "Treasurer"), ("S", "Secretary"),
("EC", "EC members"), ("O", "Other members")])
member_email_id = models.EmailField(verbose_name = "Member's Email", max_length=100)
member_from_date = models.DateField(verbose_name = "Member From", auto_now_add=True)
last_login = models.DateTimeField(verbose_name="Last Login", auto_now = True)
member_to_date = models.DateField(verbose_name="Member To")
deld_in_src_ind = models.CharField(max_length=20, choices=[("yes", "Yes"), ("no", "No")], blank=True, null=True)
created_date = models.DateField(verbose_name = "Created Date", auto_now_add = True, blank=True, null=True)
created_by = models.ForeignKey(User, to_field='id', related_name = "assoc_created_by", on_delete = models.SET_NULL, verbose_name="Created By", max_length=100, blank=True, null=True, default=None)
last_updated_date = models.DateField(verbose_name = "Updated Date", auto_now = True, blank=True, null=True)
last_updated_by = models.ForeignKey(User, to_field='id', related_name = "assoc_updated_by", on_delete = models.SET_NULL, verbose_name="Last Updated By", max_length=100, blank=True, null=True, default=None)
USERNAME_FIELD = 'member_email_id'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.original_email_id = self.member_email_id
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
S_Society_Association_Master.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
def save(self, force_insert=False, force_update=False, *args, **kwargs):
if self.member_email_id != self.original_email_id:
#Send Email
member_name = self.member_name
member_email = self.member_email_id
subject = 'Registration Successful'
message = f'Hi {member_name}, You have been registered. You can login now with your email address and phone number'
email_from = settings.EMAIL_HOST_USER
recipients = [member_email, ]
send_mail(subject, message, email_from, recipients)
super().save(force_insert, force_update, *args, **kwargs)
self.original_email_id = self.member_email_id
else:
super().save(force_insert, force_update, *args, **kwargs)
views.py
home.html
<p>Society Admin</p>
<h1>Welcome {{request.user.member_name}}</h1>
<h2>{{email}}</h2>
<a href="add_owner">Add Owner</a>
add_owner.html
<form action = "" method = "post">
{% csrf_token %}
{{form }}
<input type="submit" value=Submit>
</form>
<h1>Welcome {{request.user.member_name}}</h1>
<h2>{{username}}</h2>