20 lines
660 B
Python
20 lines
660 B
Python
|
|
import time
|
|
from typing import Dict
|
|
import jwt as pyjwt
|
|
from server.backend.schema.pydantic import settings
|
|
|
|
def signJWT(user_info: dict) -> str:
|
|
payload = {
|
|
"user_id": user_info.id,
|
|
"admin":user_info.admin,
|
|
"expires": time.time() + settings.ACCESS_TOKEN_EXPIRE_SECONDS
|
|
}
|
|
token = pyjwt.encode(payload, settings.SECRET_KEY, algorithm=settings.ALGORITHM)
|
|
return token
|
|
def decodeJWT(token: str) -> dict:
|
|
try:
|
|
decoded_token = pyjwt.decode(token, settings.SECRET_KEY, algorithms=[settings.ALGORITHM])
|
|
return decoded_token if decoded_token["expires"] >= time.time() else None
|
|
except:
|
|
return {} |