Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 9 additions & 10 deletions services/api/endpoints/users.py
Original file line number Diff line number Diff line change
@@ -1,29 +1,31 @@
from fastapi import APIRouter, HTTPException, status, Depends, Request
from pydantic import BaseModel, EmailStr
from core.auth import get_current_user
from core.database import supabase # Assuming supabase client is initialized in core/database.py
from core.database import (
supabase,
) # Assuming supabase client is initialized in core/database.py
from supabase import Client

router = APIRouter()


# Request schemas
class RegisterRequest(BaseModel):
email: EmailStr
password: str


class LoginRequest(BaseModel):
email: EmailStr
password: str


# Route: Register user
@router.post("/register")
def register_user(payload: RegisterRequest):
try:
result = supabase.auth.sign_up(
{
"email": payload.email,
"password": payload.password
}
{"email": payload.email, "password": payload.password}
)
return {"message": "User registered successfully", "user": result.user}
except Exception as e:
Expand All @@ -35,17 +37,14 @@ def register_user(payload: RegisterRequest):
def login_user(payload: LoginRequest):
try:
result = supabase.auth.sign_in_with_password(
{
"email": payload.email,
"password": payload.password
}
{"email": payload.email, "password": payload.password}
)
if result.session is None:
raise HTTPException(status_code=401, detail="Invalid credentials")
return {
"access_token": result.session.access_token,
"refresh_token": result.session.refresh_token,
"user": result.user
"user": result.user,
}
except Exception as e:
raise HTTPException(status_code=401, detail=str(e))
Expand Down
2 changes: 2 additions & 0 deletions services/core/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

security = HTTPBearer()


def decode_jwt_token(token: str):
try:
decoded = jwt.decode(token, JWT_SECRET, algorithms=[JWT_ALGORITHM])
Expand All @@ -14,6 +15,7 @@ def decode_jwt_token(token: str):
except jwt.InvalidTokenError:
raise HTTPException(status_code=401, detail="Invalid token")


def get_current_user(credentials: HTTPAuthorizationCredentials = Depends(security)):
token = credentials.credentials
payload = decode_jwt_token(token)
Expand Down
4 changes: 2 additions & 2 deletions services/core/config.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# core/config.py
import os
from dotenv import load_dotenv
from supabase import create_client, Client
from supabase import create_client, Client

load_dotenv() # Load from .env file if present

SUPABASE_URL = os.getenv("SUPABASE_URL")
SUPABASE_ANON_KEY = os.getenv("SUPABASE_ANON_KEY")
SUPABASE_SERVICE_ROLE_KEY = os.getenv("SUPABASE_SERVICE_ROLE_KEY")
JWT_SECRET = os.getenv("JWT_SECRET", "super-secret")
JWT_ALGORITHM = os.getenv("JWT_ALGORITHM", "HS256")