diff --git a/backend/auth.py b/backend/auth.py index 726771f..e5f209c 100644 --- a/backend/auth.py +++ b/backend/auth.py @@ -1,5 +1,26 @@ -from database import execute +from database import execute, fetch_one import bcrypt +from jose import jwt, JWTError +from datetime import datetime, timedelta + +SECRET_KEY = "" +ALGORITHM = "HS256" + + +def create_token(user_id): + payload = { + "user_id": user_id, + "exp": datetime.utcnow() + timedelta(hours=24) + } + + token = jwt.encode( + payload, + SECRET_KEY, + algorithm=ALGORITHM + ) + + return token + def create_user(username, password): @@ -18,8 +39,8 @@ def create_user(username, password): return user_id + def verify_user(username, password): - from database import fetch_one user = fetch_one( "SELECT * FROM users WHERE username = ?", @@ -35,5 +56,4 @@ def verify_user(username, password): ): return user["id"] - return None \ No newline at end of file diff --git a/backend/main.py b/backend/main.py index 80c2c6e..166e274 100644 --- a/backend/main.py +++ b/backend/main.py @@ -3,7 +3,7 @@ from pydantic import BaseModel from database import fetch_all from events import create_event -from auth import create_user, verify_user +from auth import create_user, verify_user, create_token from rooms import create_room, search_room, accept_room class Login(BaseModel): @@ -122,11 +122,15 @@ def api_login(login: Login): "status": "failed" } + token = create_token(user_id) + return { "status": "success", - "user_id": user_id + "access_token": token, + "token_type": "bearer" } + @app.post("/create_room") def api_create_room(room: RoomCreate): diff --git a/database/calendar.db b/database/calendar.db index 399f296..7ba966f 100644 Binary files a/database/calendar.db and b/database/calendar.db differ