stages/email: prevent error with duplicate token
closes #1827 Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
parent
121b36f35f
commit
de8cf65503
|
@ -63,14 +63,13 @@ class EmailStageView(ChallengeStageView):
|
||||||
valid_delta = timedelta(
|
valid_delta = timedelta(
|
||||||
minutes=current_stage.token_expiry + 1
|
minutes=current_stage.token_expiry + 1
|
||||||
) # + 1 because django timesince always rounds down
|
) # + 1 because django timesince always rounds down
|
||||||
token_filters = {
|
identifier = slugify(f"ak-email-stage-{current_stage.name}-{pending_user}")
|
||||||
"user": pending_user,
|
|
||||||
"identifier": slugify(f"ak-email-stage-{current_stage.name}-{pending_user}"),
|
|
||||||
}
|
|
||||||
# Don't check for validity here, we only care if the token exists
|
# Don't check for validity here, we only care if the token exists
|
||||||
tokens = Token.objects.filter(**token_filters)
|
tokens = Token.objects.filter(identifier=identifier)
|
||||||
if not tokens.exists():
|
if not tokens.exists():
|
||||||
return Token.objects.create(expires=now() + valid_delta, **token_filters)
|
return Token.objects.create(
|
||||||
|
expires=now() + valid_delta, user=pending_user, identifier=identifier
|
||||||
|
)
|
||||||
token = tokens.first()
|
token = tokens.first()
|
||||||
# Check if token is expired and rotate key if so
|
# Check if token is expired and rotate key if so
|
||||||
if token.is_expired:
|
if token.is_expired:
|
||||||
|
|
Reference in New Issue