stages/email: use pending user correctly

closes #4318

Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
Jens Langhammer 2023-01-01 23:50:57 +01:00
parent de0a5191f7
commit c810628fe3
No known key found for this signature in database

View file

@ -57,7 +57,7 @@ class EmailStageView(ChallengeStageView):
def get_token(self) -> FlowToken: def get_token(self) -> FlowToken:
"""Get token""" """Get token"""
pending_user = self.executor.plan.context[PLAN_CONTEXT_PENDING_USER] pending_user = self.get_pending_user()
current_stage: EmailStage = self.executor.current_stage current_stage: EmailStage = self.executor.current_stage
valid_delta = timedelta( valid_delta = timedelta(
minutes=current_stage.token_expiry + 1 minutes=current_stage.token_expiry + 1
@ -82,7 +82,7 @@ class EmailStageView(ChallengeStageView):
def send_email(self): def send_email(self):
"""Helper function that sends the actual email. Implies that you've """Helper function that sends the actual email. Implies that you've
already checked that there is a pending user.""" already checked that there is a pending user."""
pending_user: User = self.executor.plan.context[PLAN_CONTEXT_PENDING_USER] pending_user = self.get_pending_user()
email = self.executor.plan.context.get(PLAN_CONTEXT_EMAIL_OVERRIDE, None) email = self.executor.plan.context.get(PLAN_CONTEXT_EMAIL_OVERRIDE, None)
if not email: if not email:
email = pending_user.email email = pending_user.email
@ -109,8 +109,9 @@ class EmailStageView(ChallengeStageView):
) and self.executor.plan.context.get(PLAN_CONTEXT_IS_RESTORED, False): ) and self.executor.plan.context.get(PLAN_CONTEXT_IS_RESTORED, False):
messages.success(request, _("Successfully verified Email.")) messages.success(request, _("Successfully verified Email."))
if self.executor.current_stage.activate_user_on_success: if self.executor.current_stage.activate_user_on_success:
self.executor.plan.context[PLAN_CONTEXT_PENDING_USER].is_active = True user = self.get_pending_user()
self.executor.plan.context[PLAN_CONTEXT_PENDING_USER].save() user.is_active = True
user.save()
return self.executor.stage_ok() return self.executor.stage_ok()
if PLAN_CONTEXT_PENDING_USER not in self.executor.plan.context: if PLAN_CONTEXT_PENDING_USER not in self.executor.plan.context:
self.logger.debug("No pending user") self.logger.debug("No pending user")