Skip to content

Commit 2c6f60e

Browse files
committed
fix error and reformat code
1 parent 795718c commit 2c6f60e

File tree

2 files changed

+37
-73
lines changed

2 files changed

+37
-73
lines changed

backend/app/apis/v1/routes/users.py

+30-72
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,13 @@
55
from fastapi import APIRouter
66
from fastapi.responses import JSONResponse
77
from sqlmodel import Session, select
8+
from app.schemas.token import TokenResponse
9+
from fastapi.security import OAuth2PasswordRequestForm
10+
from datetime import timedelta
11+
from fastapi import Depends
12+
from fastapi import HTTPException, status
13+
14+
from backend.app.internal.config import Settings, get_settings
815

916
router = APIRouter(prefix="/users", tags=["Users"])
1017

@@ -16,7 +23,7 @@ def get_users():
1623
return result
1724

1825

19-
@router.post("/signup")
26+
@router.post("/")
2027
def signup_user(new_user: UserCreate) -> UserResponse:
2128
with Session(engine) as session:
2229
existing_user: User | None = session.exec(select(User).where(User.email == new_user.email)).first()
@@ -39,76 +46,27 @@ def signup_user(new_user: UserCreate) -> UserResponse:
3946
created_at=user.created_at,
4047
updated_at=user.updated_at,
4148
)
49+
50+
def authenticate_user():
51+
return {}
4252

53+
def create_access_token():
54+
return {}
4355

44-
45-
# @router.put("/{user_id}", response_model=schemas.User)
46-
# def update_user(
47-
# *,
48-
# db: Session = Depends(deps.get_db),
49-
# user_id: UUID4,
50-
# user_in: schemas.UserUpdate,
51-
# current_user: models.User = Security(
52-
# deps.get_current_active_user,
53-
# scopes=[Role.ADMIN["name"], Role.SUPER_ADMIN["name"]],
54-
# ),
55-
# ) -> Any:
56-
# """
57-
# Update a user.
58-
# """
59-
# user = crud.user.get(db, id=user_id)
60-
# if not user:
61-
# raise HTTPException(
62-
# status_code=404,
63-
# detail="The user with this username does not exist in the system",
64-
# )
65-
# user = crud.user.update(db, db_obj=user, obj_in=user_in)
66-
# return user
67-
68-
69-
# @router.get("/me", response_model=schemas.User)
70-
# def read_user_me(
71-
# db: Session = Depends(deps.get_db),
72-
# current_user: models.User = Depends(deps.get_current_active_user),
73-
# ) -> Any:
74-
# """
75-
# Get current user.
76-
# """
77-
# if not current_user.user_role:
78-
# role = None
79-
# else:
80-
# role = current_user.user_role.role.name
81-
# user_data = schemas.User(
82-
# id=current_user.id,
83-
# email=current_user.email,
84-
# is_active=current_user.is_active,
85-
# full_name=current_user.full_name,
86-
# created_at=current_user.created_at,
87-
# updated_at=current_user.updated_at,
88-
# role=role,
89-
# )
90-
# return user_data
91-
92-
93-
# @router.put("/me", response_model=schemas.User)
94-
# def update_user_me(
95-
# # *,
96-
# db: Session = Depends(deps.get_db),
97-
# full_name: str = Body(None),
98-
# phone_number: str = Body(None),
99-
# email: EmailStr = Body(None),
100-
# current_user: models.User = Depends(deps.get_current_active_user),
101-
# ) -> Any:
102-
# """
103-
# Update own user.
104-
# """
105-
# current_user_data = jsonable_encoder(current_user)
106-
# user_in = schemas.UserUpdate(**current_user_data)
107-
# if phone_number is not None:
108-
# user_in.phone_number = phone_number
109-
# if full_name is not None:
110-
# user_in.full_name = full_name
111-
# if email is not None:
112-
# user_in.email = email
113-
# user = crud.user.update(db, db_obj=current_user, obj_in=user_in)
114-
# return user
56+
@router.post("/token", response_model=TokenResponse)
57+
async def login_for_access_token(
58+
form_data: OAuth2PasswordRequestForm = Depends(),
59+
settings: Settings = Depends(get_settings)
60+
):
61+
user = authenticate_user(form_data.username, form_data.password)
62+
if not user:
63+
raise HTTPException(
64+
status_code=status.HTTP_401_UNAUTHORIZED,
65+
detail="Incorrect username or password",
66+
headers={"WWW-Authenticate": "Bearer"},
67+
)
68+
access_token_expires = timedelta(minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES)
69+
access_token = create_access_token(
70+
user.email, expires_delta=access_token_expires
71+
)
72+
return {"access_token": access_token, "token_type": "bearer"}

backend/app/schemas/token.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import datetime
12
from typing import Optional
23

34
from pydantic import BaseModel
@@ -39,4 +40,9 @@ class TokenData(BaseModel):
3940

4041

4142
class PasswordReset(BaseModel):
42-
password: str
43+
password: str
44+
45+
class TokenResponse(BaseModel):
46+
access_token = str
47+
token_type: str
48+
expiry: datetime

0 commit comments

Comments
 (0)