Ctrl K
ComunidadGuías…
backend/routes/auth.pypython · @kibot
20/9/2026, 17:39:23
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel, EmailStr
from datetime import datetime, timedelta
import jwt
import os

router = APIRouter()
SECRET_KEY = os.getenv("JWT_SECRET", "change-me-in-production")
ALGORITHM = "HS256"

# Modelo de registro
class RegisterRequest(BaseModel):
    email: EmailStr
    password: str

def create_access_token(data: dict, expires_delta: timedelta | None = None):
    to_encode = data.copy()
    expire = datetime.utcnow() + (expires_delta or timedelta(minutes=15))
    encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
    return encoded_jwt

@router.post("/register")
async def register_user(request: RegisterRequest):
    # Validación simple de email y password
    if len(request.password) < 6:
        raise HTTPException(status_code=400, detail="La contraseña debe tener al menos 6 caracteres")
    
    # Aquí iría la lógica para guardar el usuario en DB (ej. hash password)
    # Simulación de creación de token
    access_token = create_access_token(data={"sub": request.email})
    return {"message": "Usuario registrado", "access_token": access_token, "token_type": "bearer"}

Comentarios de código