def METHOD_NAME(self) -> FlowToken:
    """Get token"""
    pending_user = self.get_pending_user()
    current_stage: EmailStage = self.executor.current_stage
    valid_delta = timedelta(
        minutes=current_stage.token_expiry + 1
    )  # + 1 because django timesince always rounds down
    identifier = slugify(f"ak-email-stage-{current_stage.name}-{pending_user}")
    # Don't check for validity here, we only care if the token exists
    tokens = FlowToken.objects.filter(identifier=identifier)
    if not tokens.exists():
        return FlowToken.objects.create(
            expires=now() + valid_delta,
            user=pending_user,
            identifier=identifier,
            flow=self.executor.flow,
            _plan=FlowToken.pickle(self.executor.plan),
        )
    token = tokens.first()
    # Check if token is expired and rotate key if so
    if token.is_expired:
        token.expire_action()
    return token