Skip to content

Commit a9f7543

Browse files
committed
refactor: code cleanup
1 parent 8322ad7 commit a9f7543

7 files changed

Lines changed: 249 additions & 246 deletions

File tree

app/handlers/auth_handler.py

Lines changed: 18 additions & 153 deletions
Original file line numberDiff line numberDiff line change
@@ -14,29 +14,33 @@
1414
)
1515
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/users/token")
1616

17-
# 현재 로그인한 사용자를 가져오는 의존성 함수
17+
# 현재 로그인한 사용자를 가져오기
1818
async def get_current_user(token: str = Depends(oauth2_scheme), db: Session = Depends(get_db_session)):
1919
jwt_util = JWTUtil()
2020
payload = jwt_util.decode_token(token)
21+
2122
if payload is None:
2223
raise HTTPException(
2324
status_code=404,
2425
detail="Could not validate credentials",
2526
headers={"WWW-Authenticate": "Bearer"},
2627
)
27-
user_id: int = payload.get("id") # 수정: "id"를 추출
28+
29+
user_id: int = payload.get("id")
2830
if user_id is None:
2931
raise HTTPException(
3032
status_code=404,
3133
detail="Could not validate credentials",
3234
headers={"WWW-Authenticate": "Bearer"},
3335
)
34-
user = db.get(User, user_id) # 수정: user_id (id)를 사용하여 조회
36+
37+
user = db.get(User, user_id)
3538
if user is None:
3639
raise HTTPException(status_code=404, detail="User not found")
40+
3741
return user
3842

39-
43+
# 토큰 발급
4044
@router.post("/token")
4145
def login_for_access_token(
4246
form_data: OAuth2PasswordRequestForm = Depends(),
@@ -66,15 +70,15 @@ def login_for_access_token(
6670
return {
6771
"access_token": access_token,
6872
"token_type": "bearer",
69-
**payload # 사용자 정보 포함
73+
**payload
7074
}
7175

7276
#회원가입
7377
@router.post("/signup")
7478
async def auth_signup(req:AuthSignupReq,
75-
db=Depends(get_db_session),
76-
jwtUtil:JWTUtil=Depends(),
77-
authService:AuthService=Depends()):
79+
db=Depends(get_db_session),
80+
jwtUtil:JWTUtil=Depends(),
81+
authService:AuthService=Depends()):
7882
user = authService.signup(db, req.login_id, req.pwd, req.name, req.email)
7983

8084
if not user:
@@ -89,14 +93,14 @@ async def auth_signup(req:AuthSignupReq,
8993
"created_at": user.created_at
9094
}
9195

92-
# 🔹 토큰 생성
96+
# 토큰 생성
9397
token = jwtUtil.create_token(payload)
9498

95-
# 🔹 DB에 반영되도록 저장
99+
# DB에 반영되도록 저장
96100
user.access_token = token
97-
db.add(user) # 변경된 객체 추가
98-
db.commit() # DB에 반영
99-
db.refresh(user) # DB에서 최신 상태 불러오기 (flush 역할)
101+
db.add(user)
102+
db.commit()
103+
db.refresh(user)
100104

101105
return {
102106
"id": user.id,
@@ -105,7 +109,7 @@ async def auth_signup(req:AuthSignupReq,
105109
"username": user.username,
106110
"role": user.role,
107111
"created_at": user.created_at,
108-
"access_token": user.access_token # ✅ DB에도 반영됨!
112+
"access_token": user.access_token
109113
}
110114

111115
# 로그인
@@ -120,142 +124,3 @@ def auth_signin(req:AuthLoginReq,
120124
user.access_token = jwtUtil.create_token(user.model_dump())
121125
return user
122126

123-
124-
## 내 판매 내역 조회
125-
126-
@router.get("/selling", status_code=200)
127-
def check_my_selling_list(
128-
db: Session = Depends(get_db_session),
129-
current_user: User = Depends(get_current_user),
130-
):
131-
"""
132-
현재 로그인한 사용자의 판매 내역 조회
133-
"""
134-
selling_list = db.exec(select(Product).where(Product.user_id == current_user.id)).all()
135-
return {"my_selling_list": selling_list}
136-
# 내 구매 내역 조회
137-
@router.get("/{user_id}/bought")
138-
def get_user_bought(user_id: int, db: Session = Depends(get_db_session)):
139-
# 사용자 ID에 해당하는 구매 내역을 가져옵니다.
140-
purchases = db.exec(select(Purchase).where(Purchase.user_id == user_id)).all()
141-
142-
# 각 구매 내역에 대해 상품을 찾아서 반환합니다.
143-
# 만약 값이 없으면 빈 리스트를 출력
144-
results = [db.get(Product, purchase.product_id) for purchase in purchases]
145-
146-
return results
147-
148-
# 내 좋아요 내역 조회
149-
@router.get("/{user_id}/likes")
150-
def get_user_likes(user_id: int, db: Session = Depends(get_db_session)):
151-
# 사용자 ID에 해당하는 좋아요 내역을 가져옵니다.
152-
like_products = db.exec(select(Likes).where(Likes.user_id == user_id)).all()
153-
154-
# 각 좋아요 내역에 대해 상품을 찾아서 반환합니다.
155-
# 만약 값이 없으면 빈 리스트를 출력
156-
results = [db.get(Product, like_product.product_id) for like_product in like_products]
157-
158-
return results
159-
160-
161-
# 내 프로필 조회
162-
@router.get("/{user_id}")
163-
def check_profile(user_id: int, db=Depends(get_db_session)):
164-
if not user_id:
165-
raise HTTPException(status_code=404, detail="Not Found")
166-
user = db.exec(select(User).filter(User.id == user_id)).first()
167-
if not user:
168-
raise HTTPException(status_code=404, detail="User not found")
169-
170-
return {
171-
"id": user.id,
172-
"login_id": user.login_id,
173-
"email": user.email,
174-
"username": user.username,
175-
"role": user.role,
176-
"created_at": user.created_at
177-
}
178-
179-
#프로필 수정
180-
@router.put("/profile")
181-
def update_profile(
182-
update_data: ProfileUpdateRequest,
183-
current_user: User = Depends(get_current_user),
184-
db: Session = Depends(get_db_session),
185-
auth_service: AuthService = Depends(),
186-
jwt_util: JWTUtil = Depends()
187-
):
188-
# 현재 비밀번호 확인 (비밀번호 변경 시)
189-
if update_data.password:
190-
if not auth_service.verify_pwd(update_data.current_password, current_user.password):
191-
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="Current password is incorrect")
192-
current_user.password = auth_service.get_hashed_pwd(update_data.password)
193-
194-
# 이메일 중복 확인
195-
if update_data.email and update_data.email != current_user.email:
196-
existing_user = db.exec(select(User).where(User.email == update_data.email)).first()
197-
if existing_user:
198-
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="Email already in use")
199-
200-
# 로그인 ID 중복 확인
201-
if update_data.login_id and update_data.login_id != current_user.login_id:
202-
existing_user = db.exec(select(User).where(User.login_id == update_data.login_id)).first()
203-
if existing_user:
204-
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="Login ID already in use")
205-
206-
# 사용자 정보 업데이트
207-
if update_data.username and update_data.username != current_user.username:
208-
current_user.username = update_data.username
209-
if update_data.email and update_data.email != current_user.email:
210-
current_user.email = update_data.email
211-
if update_data.login_id and update_data.login_id != current_user.login_id:
212-
current_user.login_id = update_data.login_id
213-
214-
try:
215-
db.add(current_user)
216-
db.commit()
217-
db.refresh(current_user)
218-
except Exception as e:
219-
db.rollback()
220-
raise HTTPException(status_code=500, detail="An error occurred while updating the profile")
221-
222-
# 새로운 토큰 생성 (필요한 경우)
223-
payload = {
224-
"id": current_user.id,
225-
"login_id": current_user.login_id,
226-
"email": current_user.email,
227-
"username": current_user.username,
228-
"role": current_user.role,
229-
"created_at": str(current_user.created_at) # datetime -> string 변환 필요
230-
}
231-
new_access_token = jwt_util.create_token(payload)
232-
233-
# 업데이트된 사용자 정보와 새 토큰 반환
234-
return {
235-
"id": current_user.id,
236-
"login_id": current_user.login_id,
237-
"email": current_user.email,
238-
"username": current_user.username,
239-
"role": current_user.role,
240-
"created_at": str(current_user.created_at),
241-
"access_token": new_access_token # 새 토큰 포함
242-
}
243-
244-
245-
# 회원 탈퇴
246-
@router.delete("/profile")
247-
def delete_profile(
248-
current_user: User = Depends(get_current_user),
249-
db: Session = Depends(get_db_session)
250-
):
251-
# 사용자 확인
252-
user = db.get(User, current_user.id)
253-
if not user:
254-
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="User not found")
255-
256-
# 데이터베이스에서 사용자 삭제
257-
db.delete(user)
258-
db.commit()
259-
260-
return {"message": "Profile deleted successfully"}
261-

app/handlers/category_handler.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,18 @@
1111
class CategoryRequest(BaseModel):
1212
name: str
1313

14-
# 전체 카테고리 목록 조회
14+
# 전체 카테고리 목록 조회
1515
@router.get("/", status_code=200)
1616
def get_categories(db: Session = Depends(get_db_session)) -> List[Category]:
17-
"""전체 카테고리 목록 가져오기"""
1817
categories = db.exec(select(Category)).all()
1918
return categories
2019

21-
# 새로운 카테고리 추가 API
20+
# 새로운 카테고리 추가
2221
@router.post("/", status_code=201)
2322
def create_category(
2423
categoryRequest: CategoryRequest = Body(...),
2524
db: Session = Depends(get_db_session)
2625
) -> Category:
27-
"""새로운 카테고리 추가"""
2826

2927
# 이미 존재하는 카테고리인지 확인
3028
existing_category = db.exec(select(Category).where(Category.name == categoryRequest.name)).first()

app/handlers/comment_handlers.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,6 @@ def create_comment(
3434
new_comment = comment_service.create_comment(session, product_id, current_user.id, content)
3535
return RespComments(comments=[new_comment])
3636

37-
# ✅ Pydantic 모델 정의
38-
class CommentUpdate(BaseModel):
39-
content: str
4037

4138
# 댓글 수정 (인증 필요)
4239
@router.put("/{comment_id}", status_code=200)

0 commit comments

Comments
 (0)