1
+ import logging
2
+
1
3
from django .conf import settings
2
- from django .contrib .auth import get_user_model
3
4
from django .contrib .auth .backends import ModelBackend
4
- from django .core .signing import BadSignature
5
+ from django .core .signing import BadSignature , SignatureExpired
5
6
from django .urls import reverse
6
7
7
8
from . import signing
9
+ from .signing import UserDoesNotExist
10
+
11
+ logger = logging .getLogger (__name__ )
8
12
9
13
10
14
class MailAuthBackend (ModelBackend ):
@@ -16,8 +20,15 @@ def authenticate(self, request, token=None):
16
20
17
21
try :
18
22
user = self .signer .unsign (token , max_age = max_age , single_use = single_use )
19
- except (get_user_model ().DoesNotExist , BadSignature ):
20
- return
23
+ except UserDoesNotExist :
24
+ logger .warning (
25
+ "Valid token for non-existing user. Maybe the user has been deleted." ,
26
+ exc_info = True ,
27
+ )
28
+ except SignatureExpired :
29
+ logger .warning ("Token has expired." , exc_info = True )
30
+ except BadSignature :
31
+ logger .exception ("Malicious or corrupted login token received." )
21
32
else :
22
33
if self .user_can_authenticate (user ):
23
34
return user
0 commit comments