2017-02-01 4 views
0

Exemple: -Comment autoriser allauth à n'accepter que les adresses gmail appartenant à un certain institut?

qwe123 @pilani.bits-pilani.ac.in

Je pense que je dois juste vérifier si le « modèle fin » est présent dans l'adresse e-mail ou non, mais le problème est de savoir où le vérifier dans le paquet allauth

+0

Est-ce trié? – e4c5

+0

Non, les moyens spécifiés n'ont pas fonctionné –

+0

s'il vous plaît utilisez le terme "ne fonctionne pas" ici sur stackoverflow si et seulement si vous voulez attirer des downvotes. Pour toutes les autres situations, expliquez ce qui s'est passé comme un message d'erreur qui est apparu – e4c5

Répondre

1

Pour autant que je sache, il n'y a pas de moyen direct de le faire dans django-allauth. Le mieux est d'écouter le signal user_signed_up et de désactiver un compte qui n'a pas le format d'adresse électronique requis.

from allauth.account.signals import user_signed_up 
from django.dispatch import receiver 

@receiver(user_signed_up) 
def after_user_signed_up(request, user): 
    if user.email.endswith('pilani.bits-pilani.ac.in'): 
     # do something for valid accounts 
    else : 
     user.is_active = False 
     user.save() 
     # raise SomeException 

Si vous avez plus d'un modèle d'adresse, vous aurez besoin de plusieurs déclarations ou si peut-être créer un modèle pour les modèles d'adresse e-mail autorisées.

+0

et je suis juste confus là où exactement pour inclure ce code. –

+0

lieu habituel pour les gestionnaires de signaux est dans views.py, mais il peut également aller dans models.py aussi. Pour plus d'informations si nécessaire http://stackoverflow.com/questions/40746137/post-save-signal-isnt-called/40883331#40883331 – e4c5

0

Il n'existe aucun moyen direct de le faire. Mais il y a certainement peu de moyens indirects. Vous pouvez vérifier en utilisant email header. De là, vous pouvez obtenir des informations de base sur l'e-mail. Vous pouvez stocker ip address et filtrer en utilisant cela pour un domaine particulier.