Co-authored-by: MENDOZA BALLARDO GAEL RICARDO <gael-meb123@users.noreply.github.com> Co-authored-by: Azareth-Tr <Azareth-Tr@users.noreply.github.com> modificacion de las vistas principales para el usuario ciudadano, primer avance para el panel admin
44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
from fastapi import APIRouter, Depends, HTTPException
|
|
from pydantic import BaseModel, EmailStr
|
|
from app.core.deps import get_current_user
|
|
from app.core.supabase_client import supabase_admin
|
|
from gotrue.types import User
|
|
|
|
router = APIRouter(prefix="/users", tags=["users"])
|
|
|
|
class UserUpdate(BaseModel):
|
|
name: str | None = None
|
|
email: EmailStr | None = None
|
|
|
|
@router.patch("/me", status_code=204)
|
|
def update_user_profile(
|
|
update_data: UserUpdate,
|
|
current_user: User = Depends(get_current_user),
|
|
):
|
|
"""
|
|
Actualiza el perfil del usuario autenticado (nombre, email).
|
|
"""
|
|
user_id = current_user.id
|
|
update_payload = {}
|
|
|
|
if update_data.name:
|
|
# El nombre no está en Supabase Auth, sino en nuestra tabla `users`
|
|
try:
|
|
supabase_admin.table("users").update({"name": update_data.name}).eq(
|
|
"id", user_id
|
|
).execute()
|
|
except Exception as e:
|
|
raise HTTPException(status_code=500, detail=f"Error al actualizar el nombre: {e}")
|
|
|
|
if update_data.email:
|
|
# El email sí está en Supabase Auth
|
|
try:
|
|
supabase_admin.auth.admin.update_user_by_id(
|
|
user_id, {"email": update_data.email}
|
|
)
|
|
except Exception as e:
|
|
raise HTTPException(status_code=500, detail=f"Error al actualizar el email: {e}")
|
|
|
|
return
|
|
|