from datetime import datetime, timedelta import jwt from flask import current_app def get_user_token(user_id, password_reset=False): expiration_days = ( 0 if password_reset else current_app.config.get('TOKEN_EXPIRATION_DAYS') ) expiration_seconds = ( current_app.config.get('PASSWORD_TOKEN_EXPIRATION_SECONDS') if password_reset else current_app.config.get('TOKEN_EXPIRATION_SECONDS') ) payload = { 'exp': datetime.utcnow() + timedelta(days=expiration_days, seconds=expiration_seconds), 'iat': datetime.utcnow(), 'sub': user_id, } return jwt.encode( payload, current_app.config.get('SECRET_KEY'), algorithm='HS256', ) def decode_user_token(auth_token): payload = jwt.decode( auth_token, current_app.config.get('SECRET_KEY'), algorithms=['HS256'], ) return payload['sub']