def METHOD_NAME(self, response: ChallengeResponse) -> HttpResponse:
    if response.data["token"] != self.request.session[SESSION_KEY_CONSENT_TOKEN]:
        self.logger.info("Invalid consent token, re-showing prompt")
        return self.get(self.request)
    if self.should_always_prompt():
        return self.executor.stage_ok()
    current_stage: ConsentStage = self.executor.current_stage
    application = self.executor.plan.context[PLAN_CONTEXT_APPLICATION]
    permissions = self.executor.plan.context.get(
        PLAN_CONTEXT_CONSENT_PERMISSIONS, []
    ) + self.executor.plan.context.get(PLAN_CONTEXT_CONSENT_EXTRA_PERMISSIONS, [])
    permissions_string = " ".join(x["id"] for x in permissions)
    if not self.executor.plan.context.get(PLAN_CONTEXT_CONSENT, None):
        self.executor.plan.context[PLAN_CONTEXT_CONSENT] = UserConsent(
            user=self.request.user,
            application=application,
        )
    consent: UserConsent = self.executor.plan.context[PLAN_CONTEXT_CONSENT]
    consent.permissions = permissions_string
    if current_stage.mode == ConsentMode.PERMANENT:
        consent.expiring = False
    if current_stage.mode == ConsentMode.EXPIRING:
        consent.expires = now() + timedelta_from_string(current_stage.consent_expire_in)
    consent.save()
    return self.executor.stage_ok()