xyb/drf-passwordless-jwt

View on GitHub
drf_passwordless_jwt/utils.py

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
from datetime import datetime
from datetime import timedelta
from datetime import timezone

import jwt
from django.conf import settings


def generate_jwt(email):
    payload = {"email": email}
    exp = timedelta(seconds=settings.JWT_EXPIRE_SECONDS)
    payload["exp"] = datetime.now(tz=timezone.utc) + exp
    token = jwt.encode(payload, settings.JWT_SECRET, algorithm="HS256")
    return token


def decode_jwt(token):
    payload = jwt.decode(token, settings.JWT_SECRET, algorithms=["HS256"])
    ts = payload["exp"]
    payload["exp"] = datetime.fromtimestamp(ts, timezone.utc)
    return payload