diff --git a/app/dependencies.py b/app/dependencies.py index 3e522b3..645ad22 100644 --- a/app/dependencies.py +++ b/app/dependencies.py @@ -6,7 +6,7 @@ from sqlalchemy.orm import Session from app.db import crud, User, GetDB from app.models.admin import Admin, oauth2_scheme -from app.utils.jwt import get_admin_payload +from app.utils.auth import get_admin_payload def get_db(): diff --git a/app/routes/admin.py b/app/routes/admin.py index 23e1a09..bdf814e 100644 --- a/app/routes/admin.py +++ b/app/routes/admin.py @@ -11,7 +11,7 @@ from app.db import Session, crud from app.db.models import Admin as DBAdmin from app.dependencies import AdminDep, SudoAdminDep, DBDep from app.models.admin import Admin, AdminCreate, AdminInDB, AdminModify, Token -from app.utils.jwt import create_admin_token +from app.utils.auth import create_admin_token router = APIRouter(tags=["Admin"], prefix="/admins") diff --git a/app/utils/jwt.py b/app/utils/auth.py similarity index 61% rename from app/utils/jwt.py rename to app/utils/auth.py index 4055b0f..1d5d91a 100644 --- a/app/utils/jwt.py +++ b/app/utils/auth.py @@ -1,7 +1,7 @@ from datetime import datetime, timedelta from typing import Union -from jose import JWTError, jwt +import jwt from app.config import get_secret_key from app.config.env import JWT_ACCESS_TOKEN_EXPIRE_MINUTES @@ -25,19 +25,20 @@ def create_admin_token(username: str, is_sudo=False) -> str: def get_admin_payload(token: str) -> Union[dict, None]: try: payload = jwt.decode(token, get_secret_key(), algorithms=["HS256"]) - username: str = payload.get("sub") - access: str = payload.get("access") - if not username or access not in ("admin", "sudo"): - return - try: - created_at = datetime.utcfromtimestamp(payload["iat"]) - except KeyError: - created_at = None - - return { - "username": username, - "is_sudo": access == "sudo", - "created_at": created_at, - } - except JWTError: + except jwt.DecodeError: return + + username: str = payload.get("sub") + access: str = payload.get("access") + if not username or access not in ("admin", "sudo"): + return + try: + created_at = datetime.utcfromtimestamp(payload["iat"]) + except KeyError: + created_at = None + + return { + "username": username, + "is_sudo": access == "sudo", + "created_at": created_at, + } diff --git a/requirements.txt b/requirements.txt index 1394f23..a2e1dac 100644 --- a/requirements.txt +++ b/requirements.txt @@ -19,7 +19,6 @@ pyTelegramBotAPI==4.15.2 python-decouple==3.8 python-dotenv==1.0.0 python-dateutil==2.8.2 -python-jose==3.3.0 pytz==2023.3.post1 qrcode==7.4.2 requests==2.32.2 @@ -36,3 +35,4 @@ xxhash==3.4.1 grpcio==1.60.0 psycopg==3.1.18 v2share==0.1.0b9 +PyJWT~=2.8.0 \ No newline at end of file