2021-06-10 21:13:26 +02:00
|
|
|
import time
|
|
|
|
|
from typing import Dict
|
|
|
|
|
|
|
|
|
|
import jwt
|
|
|
|
|
from decouple import config
|
|
|
|
|
|
|
|
|
|
JWT_SECRET = config("secret")
|
|
|
|
|
JWT_ALGORITHM = config("algorithm")
|
2021-11-22 20:44:14 +01:00
|
|
|
JWT_EXPIRY_TIME = config("jwt_expiry_time", default=300, cast=int)
|
2021-06-10 21:13:26 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def signJWT() -> Dict[str, str]:
|
2021-11-22 20:44:14 +01:00
|
|
|
payload = {
|
|
|
|
|
"user_id": "admin",
|
|
|
|
|
"expires": int(round(time.time() * 1000) + JWT_EXPIRY_TIME),
|
|
|
|
|
}
|
2021-06-10 21:13:26 +02:00
|
|
|
token = jwt.encode(payload, JWT_SECRET, algorithm=JWT_ALGORITHM)
|
|
|
|
|
return token_response(token)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def token_response(token: str):
|
|
|
|
|
return {"access_token": token}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def decodeJWT(token: str) -> dict:
|
|
|
|
|
try:
|
2021-09-05 08:56:53 +02:00
|
|
|
decoded_token = jwt.decode(token, JWT_SECRET, algorithms=[JWT_ALGORITHM])
|
2021-06-10 21:13:26 +02:00
|
|
|
return decoded_token if decoded_token["expires"] >= time.time() else None
|
2021-09-25 17:58:53 +02:00
|
|
|
except Exception as e:
|
|
|
|
|
print(f"Unable to decode jwt_token {e}")
|
2021-06-10 21:13:26 +02:00
|
|
|
return {}
|