Skip to content

Commit f9942a8

Browse files
committed
feat: add update username endpoint
1 parent 008a51f commit f9942a8

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

routers/user.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
from typing import Annotated, Any, Dict
22

3-
from fastapi import APIRouter, Depends, HTTPException
3+
from fastapi import APIRouter, Body, Depends, HTTPException
44
from httpx import AsyncClient
55
from pydantic import AliasPath, Field
66
from pydantic import BaseModel as PydanticBaseModel
77
from sqlmodel import Session
88

99
from auth.management import get_management_token
1010
from auth.user_permissions import get_db_user, get_session_user, user_is_general_admin
11+
from auth0.client import Auth0Client, UpdateUserData, get_auth0_client
1112
from auth0.user_info import UserInfo, get_auth0_user_info
1213
from config import Settings, get_settings
1314
from db.models import (
@@ -18,7 +19,7 @@
1819
)
1920
from db.setup import get_db_session
2021
from db.types import ApprovalStatusEnum
21-
from schemas.biocommons import Auth0UserData, UserProfileData
22+
from schemas.biocommons import Auth0UserData, BiocommonsUsername, UserProfileData
2223
from schemas.user import SessionUser
2324

2425
router = APIRouter(
@@ -221,3 +222,23 @@ async def get_all_pending(
221222
approval_status=ApprovalStatusEnum.PENDING,
222223
session=db_session)
223224
return {"platforms": platforms, "groups": groups}
225+
226+
227+
@router.post("/profile/username/update",
228+
response_model=Auth0UserData)
229+
async def update_username(
230+
username: Annotated[BiocommonsUsername, Body(embed=True)],
231+
user: Annotated[SessionUser, Depends(get_session_user)],
232+
db_user: Annotated[BiocommonsUser, Depends(get_db_user)],
233+
db_session: Annotated[Session, Depends(get_db_session)],
234+
auth0_client: Annotated[Auth0Client, Depends(get_auth0_client)]
235+
):
236+
"""Update the username of the current user."""
237+
# Update in Auth0 (need to include connection when updating username)
238+
# TODO: update with connection from settings
239+
update_data = UpdateUserData(username=username, connection="Username-Password-Authentication")
240+
resp = auth0_client.update_user(user_id=user.access_token.sub, update_data=update_data)
241+
db_user.username = username
242+
db_session.add(db_user)
243+
db_session.commit()
244+
return resp

0 commit comments

Comments
 (0)