Spaces:
Runtime error
Runtime error
Update auth.py
Browse files
auth.py
CHANGED
|
@@ -132,22 +132,12 @@ async def get_user_data(
|
|
| 132 |
email: Optional[str] = Query(None, description="User email")
|
| 133 |
):
|
| 134 |
# Determine if Authorization header is provided
|
| 135 |
-
|
| 136 |
user = None
|
| 137 |
-
if
|
| 138 |
-
token =
|
| 139 |
# Authenticated path
|
| 140 |
-
|
| 141 |
-
payload = jwt.decode(token, SECRET_KEY, algorithms=["HS256"])
|
| 142 |
-
user_email: str = payload.get("sub")
|
| 143 |
-
if not user_email:
|
| 144 |
-
raise HTTPException(status_code=401, detail="Invalid token payload")
|
| 145 |
-
user = get_user(user_email)
|
| 146 |
-
if not user:
|
| 147 |
-
raise HTTPException(status_code=404, detail="User not found")
|
| 148 |
-
except JWTError as e:
|
| 149 |
-
logger.error(f"[USER DATA] JWT decode failed: {e}")
|
| 150 |
-
raise HTTPException(status_code=401, detail="Invalid token")
|
| 151 |
elif email:
|
| 152 |
# Public path
|
| 153 |
user = get_user(email)
|
|
@@ -165,18 +155,20 @@ async def get_user_data(
|
|
| 165 |
"chat_histories": user.get('chat_histories', [])
|
| 166 |
}
|
| 167 |
|
| 168 |
-
@router.put("/user/update")
|
| 169 |
async def update_user(
|
| 170 |
request: Request,
|
| 171 |
name: Optional[str] = Form(None),
|
| 172 |
email: Optional[str] = Form(None),
|
| 173 |
password: Optional[str] = Form(None),
|
| 174 |
avatar: Optional[UploadFile] = File(None),
|
| 175 |
-
current_user: dict = Depends(
|
| 176 |
):
|
| 177 |
update_data = {}
|
| 178 |
-
if name:
|
| 179 |
-
|
|
|
|
|
|
|
| 180 |
if password:
|
| 181 |
try:
|
| 182 |
_ = User(name=current_user['name'], email=current_user['email'], password=password)
|
|
@@ -194,7 +186,7 @@ async def update_user(
|
|
| 194 |
return {"message": "User updated successfully"}
|
| 195 |
|
| 196 |
@router.post("/logout")
|
| 197 |
-
async def logout(request: Request, current_user: dict = Depends(
|
| 198 |
logger.info(f"User logged out: {current_user['email']}")
|
| 199 |
return {"message": "User logged out successfully"}
|
| 200 |
|
|
|
|
| 132 |
email: Optional[str] = Query(None, description="User email")
|
| 133 |
):
|
| 134 |
# Determine if Authorization header is provided
|
| 135 |
+
auth_header = request.headers.get("Authorization", "")
|
| 136 |
user = None
|
| 137 |
+
if auth_header.startswith("Bearer "):
|
| 138 |
+
token = auth_header.split(" ", 1)[1]
|
| 139 |
# Authenticated path
|
| 140 |
+
user = get_current_user(token)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 141 |
elif email:
|
| 142 |
# Public path
|
| 143 |
user = get_user(email)
|
|
|
|
| 155 |
"chat_histories": user.get('chat_histories', [])
|
| 156 |
}
|
| 157 |
|
| 158 |
+
@router.put("/user/update")
|
| 159 |
async def update_user(
|
| 160 |
request: Request,
|
| 161 |
name: Optional[str] = Form(None),
|
| 162 |
email: Optional[str] = Form(None),
|
| 163 |
password: Optional[str] = Form(None),
|
| 164 |
avatar: Optional[UploadFile] = File(None),
|
| 165 |
+
current_user: dict = Depends(get_current_user)
|
| 166 |
):
|
| 167 |
update_data = {}
|
| 168 |
+
if name:
|
| 169 |
+
update_data['name'] = name
|
| 170 |
+
if email:
|
| 171 |
+
update_data['email'] = email
|
| 172 |
if password:
|
| 173 |
try:
|
| 174 |
_ = User(name=current_user['name'], email=current_user['email'], password=password)
|
|
|
|
| 186 |
return {"message": "User updated successfully"}
|
| 187 |
|
| 188 |
@router.post("/logout")
|
| 189 |
+
async def logout(request: Request, current_user: dict = Depends(get_current_user)):
|
| 190 |
logger.info(f"User logged out: {current_user['email']}")
|
| 191 |
return {"message": "User logged out successfully"}
|
| 192 |
|