|
2 | 2 | import json |
3 | 3 | import logging |
4 | 4 | from datetime import datetime |
| 5 | +from typing import Optional |
5 | 6 |
|
6 | 7 | from fastapi import Depends, HTTPException, Security |
7 | 8 | from fastapi.security import APIKeyCookie, APIKeyHeader, OAuth2AuthorizationCodeBearer |
@@ -435,6 +436,43 @@ async def create_user(email: str, password: str, firstName: str, lastName: str): |
435 | 436 | return user |
436 | 437 |
|
437 | 438 |
|
| 439 | +async def update_user( |
| 440 | + email: str, |
| 441 | + new_email: Optional[str], |
| 442 | + new_password: Optional[str], |
| 443 | + new_firstName: Optional[str], |
| 444 | + new_lastName: Optional[str], |
| 445 | +): |
| 446 | + """Update existing user in Keycloak.""" |
| 447 | + keycloak_admin = KeycloakAdmin( |
| 448 | + server_url=settings.auth_server_url, |
| 449 | + username=settings.keycloak_username, |
| 450 | + password=settings.keycloak_password, |
| 451 | + realm_name=settings.keycloak_realm_name, |
| 452 | + user_realm_name=settings.keycloak_user_realm_name, |
| 453 | + # client_secret_key=settings.auth_client_secret, |
| 454 | + # client_id=settings.keycloak_client_id, |
| 455 | + verify=True, |
| 456 | + ) |
| 457 | + existing_user_id = keycloak_admin.get_user_id(email) |
| 458 | + existing_user = keycloak_admin.get_user(existing_user_id) |
| 459 | + # Update user and set password |
| 460 | + keycloak_admin.update_user( |
| 461 | + existing_user_id, |
| 462 | + { |
| 463 | + "email": new_email or existing_user["email"], |
| 464 | + "username": new_email or existing_user["email"], |
| 465 | + "firstName": new_firstName or existing_user["firstName"], |
| 466 | + "lastName": new_lastName or existing_user["lastName"], |
| 467 | + }, |
| 468 | + ) |
| 469 | + if new_password: |
| 470 | + keycloak_admin.set_user_password(existing_user_id, new_password, False) |
| 471 | + |
| 472 | + updated_user = keycloak_admin.get_user(existing_user_id) |
| 473 | + return updated_user |
| 474 | + |
| 475 | + |
438 | 476 | def delete_user(email: str): |
439 | 477 | """Create a user in Keycloak.""" |
440 | 478 | keycloak_admin = KeycloakAdmin( |
|
0 commit comments