validation par email via djoser

Methode maison pour demander le mot de passe ensuite !
This commit is contained in:
Jonas Legion 2021-06-29 19:29:40 +02:00
parent 23acbba748
commit 542acdadfa
3 changed files with 27 additions and 3 deletions

View File

@ -5,7 +5,7 @@ from django.utils.translation import ugettext_lazy as _
from djoser import utils from djoser import utils
from djoser.conf import settings from djoser.conf import settings
from TiBillet.settings import DEBUG
class ActivationEmail(BaseEmailMessage): class ActivationEmail(BaseEmailMessage):
@ -21,6 +21,10 @@ class ActivationEmail(BaseEmailMessage):
user = context.get("user") user = context.get("user")
context["site_name"] = self.request.tenant.name context["site_name"] = self.request.tenant.name
context["domain"] = self.request.tenant.domain_url context["domain"] = self.request.tenant.domain_url
if DEBUG :
context["domain"] += ":8002"
context["uid"] = utils.encode_uid(user.pk) context["uid"] = utils.encode_uid(user.pk)
context["token"] = default_token_generator.make_token(user) context["token"] = default_token_generator.make_token(user)
context["url"] = settings.ACTIVATION_URL.format(**context) context["url"] = settings.ACTIVATION_URL.format(**context)

View File

@ -1,3 +1,5 @@
from django.contrib.auth import get_user_model
from django.contrib.auth.tokens import PasswordResetTokenGenerator
from django.shortcuts import render from django.shortcuts import render
# Create your views here. # Create your views here.
@ -9,6 +11,8 @@ from djoser.views import UserViewSet
import requests import requests
from django.db import connection from django.db import connection
from TiBillet import settings from TiBillet import settings
from djoser import utils
User = get_user_model()
class activate(APIView): class activate(APIView):
permission_classes = [AllowAny] permission_classes = [AllowAny]
@ -18,6 +22,15 @@ class activate(APIView):
print(uid) print(uid)
print(token) print(token)
import ipdb; ipdb.set_trace()
user = User.objects.get(pk=utils.decode_uid(uid))
PR = PasswordResetTokenGenerator()
is_token_valid = PR.check_token( user, token )
if is_token_valid :
#TODO POUR DEMAIN JOJO : DEMANDER LE MOT DE PASSE ICI !
domain = self.request.tenant.domain_url domain = self.request.tenant.domain_url
protocol = "https" protocol = "https"

View File

@ -131,8 +131,15 @@ class event(APIView):
request.user = user request.user = user
if not request.user.is_active: if not request.user.is_active or not request.user.password :
print(f"{request.user} not active")
print(f"{request.user} not active or no password")
# on retire les commande non validé pour éviter les doublons
# et on le remet non actif si pas de mot de passe :
asupr = Reservation.objects.filter(user_commande=request.user, status=Reservation.MAIL_NON_VALIDEE, event=event)
asupr.delete()
request.user.is_active = False
request.user.save()
email_activation = ActivationEmail(request) email_activation = ActivationEmail(request)