Rompiendo
23 Abr 2025, Mié

1. auth_service.py

Registro/Login con JWT.

Roles: cliente, admin, gestor_inversiones.

Recuperación de contraseña.

# auth_service.py from fastapi import APIRouter, HTTPException, Depends from fastapi.security import OAuth2PasswordRequestForm from jose import jwt from datetime import datetime, timedelta router = APIRouter() # Datos simulados de usuarios (reemplazar con base de datos real) fake_users_db = { «cliente@example.com»: { «username»: «cliente@example.com», «full_name»: «Juan Cliente», «password»: «1234», «role»: «cliente» }, «admin@example.com»: { «username»: «admin@example.com», «full_name»: «Ana Admin», «password»: «admin», «role»: «admin» } } SECRET_KEY = «secret-key» ALGORITHM = «HS256» ACCESS_TOKEN_EXPIRE_MINUTES = 60 def create_access_token(data: dict): to_encode = data.copy() expire = datetime.utcnow() + timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES) to_encode.update({«exp»: expire}) return jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM) @router.post(«/login») def login(form_data: OAuth2PasswordRequestForm = Depends()): user = fake_users_db.get(form_data.username) if not user or user[«password»] != form_data.password: raise HTTPException(status_code=400, detail=»Credenciales incorrectas») token = create_access_token({«sub»: user[«username»], «role»: user[«role»]}) return {«access_token»: token, «token_type»: «bearer»} @router.get(«/me») def get_profile(): # En producción: obtener datos desde el token decodificado return {«message»: «Perfil del usuario autenticado»} @router.post(«/register») def register_user(): return {«message»: «Registro de usuario (simulado)»} @router.post(«/forgot-password») def forgot_password(): return {«message»: «Simulación de envío de correo de recuperación»}

Te has perdido

Enable Notifications OK No thanks