idk i think it works

This commit is contained in:
2026-01-20 17:13:41 +00:00
parent 5d39a150e7
commit c0a1a0b944
2 changed files with 24 additions and 2 deletions

View File

@@ -78,10 +78,10 @@ async def register_endpoint(req: Request):
await create_user(body["first_name"], body["last_name"], body["email"], body["password"]) await create_user(body["first_name"], body["last_name"], body["email"], body["password"])
return PlainTextResponse("User registered") return PlainTextResponse("User registered")
@app.put("/edit_user") @app.post("/edit_user")
async def edit_endpoint(req: Request): async def edit_endpoint(req: Request):
body:dict = await req.json() body:dict = await req.json()
print(body.keys()) print(body)
if "user_id" not in body.keys(): raise HTTPException(400, "Provide user ID") if "user_id" not in body.keys(): raise HTTPException(400, "Provide user ID")
@@ -91,6 +91,26 @@ async def edit_endpoint(req: Request):
await edit_user(body["user_id"], params) await edit_user(body["user_id"], params)
return PlainTextResponse("User edited") return PlainTextResponse("User edited")
@app.post("/changepw")
async def changepw_endpoint(req: Request):
body:dict = await req.json()
print(body)
if "user_id" not in body.keys(): raise HTTPException(400, "Provide user ID")
params = copy.deepcopy(body) # to create a completely new version (ridiculous but okay)
params.pop("user_id")
params.pop("old_password")
user = await fetch_user_info(body["user_id"],"id")
if bcrypt.checkpw(body["old_password"].encode(), user["password"].encode()) == False:
raise HTTPException(403, "Incorrect password")
await edit_user(body["user_id"], params)
return PlainTextResponse("Password changed")
# #
# Track-specific endpoints # Track-specific endpoints
# #

View File

@@ -57,6 +57,8 @@ async def edit_user(user_id: int, updates: dict):
"""Edits an existing user.""" """Edits an existing user."""
if db.mode == "mysql": if db.mode == "mysql":
placeholders = ", ".join(["%s"] * len(updates)) placeholders = ", ".join(["%s"] * len(updates))
if updates.get("password") is not None: # there is a password update
updates["password"] = bcrypt.hashpw(updates["password"].encode(), bcrypt.gensalt()).decode()
values = list(updates.values()) values = list(updates.values())
query = f"UPDATE users SET {', '.join([f'{key} = %s' for key in updates.keys()])} WHERE id = %s" query = f"UPDATE users SET {', '.join([f'{key} = %s' for key in updates.keys()])} WHERE id = %s"
values.append(user_id) values.append(user_id)