docboard-api / app /routers /auth.py
yCamelow's picture
Upload app folder
29cbab9 verified
Raw
History Blame Contribute Delete
1.51 kB
from typing import Annotated
from fastapi import APIRouter, Depends, status, Request
from sqlmodel import Session
from app.core.limiter import limiter
from app.core.database import get_session
from app.core.security import get_current_user_id
from app.models.user import User
from app.schemas.user import UserCreate
router = APIRouter(prefix="/auth", tags=["Authentication"])
SessionDep = Annotated[Session, Depends(get_session)]
@router.post("/sync-profile", status_code=status.HTTP_201_CREATED)
@limiter.limit("10/minute")
def sync_profile(
request: Request,
user_data: UserCreate,
session: SessionDep,
sb_user_id: str = Depends(get_current_user_id)
):
"""
Sincroniza os dados do usuário criados via Supabase no banco de dados local.
Deve ser chamado pelo Frontend via Webhook ou logo após o cadastro no Supabase.
"""
# Verifica se o usuário já existe na sua tabela public.users
user = session.get(User, sb_user_id)
if not user:
# Se não existe, cria ele usando o ID que veio do Supabase
user = User(
id=sb_user_id, # Importante: usar o mesmo ID do Supabase
email=user_data.email,
full_name=user_data.full_name,
role=user_data.role, # Role é esperado para criação
specialty=user_data.specialty,
)
session.add(user)
session.commit()
session.refresh(user)
return user