amaye15 commited on
Commit
5c2b936
·
1 Parent(s): 9e56290
Files changed (1) hide show
  1. app/api.py +4 -11
app/api.py CHANGED
@@ -1,20 +1,17 @@
1
  # app/api.py
2
  from fastapi import APIRouter, HTTPException, status, Depends, WebSocket, WebSocketDisconnect
3
- # Remove JSONResponse if not explicitly needed
4
  import logging
5
 
6
  from . import schemas, crud, auth, models
7
  from .websocket import manager
8
- # --- Use the new dependency ---
9
  from .dependencies import get_required_current_user
10
 
11
  router = APIRouter()
12
  logger = logging.getLogger(__name__)
13
 
14
- # --- (register and login endpoints remain the same) ---
15
- @router.post("/register", ...) # Keep as is
16
  async def register_user(user_in: schemas.UserCreate):
17
- # ... same logic ...
18
  existing_user = await crud.get_user_by_email(user_in.email)
19
  if existing_user:
20
  raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="Email already registered")
@@ -26,29 +23,25 @@ async def register_user(user_in: schemas.UserCreate):
26
  if not created_user: raise HTTPException(status_code=500, detail="Failed to retrieve created user")
27
  return models.User(id=created_user.id, email=created_user.email)
28
 
29
- @router.post("/login", ...) # Keep as is
30
  async def login_for_access_token(form_data: schemas.UserLogin):
31
- # ... same logic ...
32
  user = await crud.get_user_by_email(form_data.email)
33
  if not user or not auth.verify_password(form_data.password, user.hashed_password):
34
  raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Incorrect email or password", headers={"WWW-Authenticate": "Bearer"})
35
  access_token = auth.create_session_token(user_id=user.id)
36
  return {"access_token": access_token, "token_type": "bearer"}
 
37
 
38
- # --- UPDATE this endpoint ---
39
  @router.get("/users/me", response_model=models.User)
40
  async def read_users_me(current_user: models.User = Depends(get_required_current_user)):
41
  """
42
  Returns the current authenticated user's details based on the
43
  Authorization: Bearer <token> header.
44
  """
45
- # The dependency now handles getting the user from the header token
46
  return current_user
47
 
48
- # --- (websocket endpoint remains the same) ---
49
  @router.websocket("/ws/{user_id_token}")
50
  async def websocket_endpoint(websocket: WebSocket, user_id_token: str):
51
- # ... same logic ...
52
  user_id = await auth.get_user_id_from_token(user_id_token)
53
  if user_id is None:
54
  logger.warning(f"WebSocket connection rejected: Invalid token {user_id_token}")
 
1
  # app/api.py
2
  from fastapi import APIRouter, HTTPException, status, Depends, WebSocket, WebSocketDisconnect
 
3
  import logging
4
 
5
  from . import schemas, crud, auth, models
6
  from .websocket import manager
 
7
  from .dependencies import get_required_current_user
8
 
9
  router = APIRouter()
10
  logger = logging.getLogger(__name__)
11
 
12
+ # --- FIX THE DECORATORS HERE ---
13
+ @router.post("/register", status_code=status.HTTP_201_CREATED, response_model=models.User) # <-- FIX HERE
14
  async def register_user(user_in: schemas.UserCreate):
 
15
  existing_user = await crud.get_user_by_email(user_in.email)
16
  if existing_user:
17
  raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="Email already registered")
 
23
  if not created_user: raise HTTPException(status_code=500, detail="Failed to retrieve created user")
24
  return models.User(id=created_user.id, email=created_user.email)
25
 
26
+ @router.post("/login", response_model=schemas.Token) # <-- FIX HERE
27
  async def login_for_access_token(form_data: schemas.UserLogin):
 
28
  user = await crud.get_user_by_email(form_data.email)
29
  if not user or not auth.verify_password(form_data.password, user.hashed_password):
30
  raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Incorrect email or password", headers={"WWW-Authenticate": "Bearer"})
31
  access_token = auth.create_session_token(user_id=user.id)
32
  return {"access_token": access_token, "token_type": "bearer"}
33
+ # --- END FIXES ---
34
 
 
35
  @router.get("/users/me", response_model=models.User)
36
  async def read_users_me(current_user: models.User = Depends(get_required_current_user)):
37
  """
38
  Returns the current authenticated user's details based on the
39
  Authorization: Bearer <token> header.
40
  """
 
41
  return current_user
42
 
 
43
  @router.websocket("/ws/{user_id_token}")
44
  async def websocket_endpoint(websocket: WebSocket, user_id_token: str):
 
45
  user_id = await auth.get_user_id_from_token(user_id_token)
46
  if user_id is None:
47
  logger.warning(f"WebSocket connection rejected: Invalid token {user_id_token}")