feat(auth): Clerk JWT authentication with Supabase user sync#17
Merged
feat(auth): Clerk JWT authentication with Supabase user sync#17
Conversation
- Add ClerkClient for JWT validation with HS256 algorithm - Add UserRepository for CRUD operations on users table - Add AuthService to orchestrate login and token validation - Add auth dependency (get_current_user, get_optional_user) - Add /api/v1/auth/login and /api/v1/auth/me endpoints - Sync users from Clerk to Supabase on login - Add email-validator dependency for pydantic EmailStr Closes CGAI-28
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📝 Descripción
Implementa autenticación OAuth 2.0 con Clerk usando JWT tokens firmados con HS256.
El sistema valida tokens del frontend, extrae información del usuario y sincroniza
automáticamente con la tabla
usersen Supabase (patrón Lazy User Synchronization).🎯 Historia de Usuario Relacionada
Closes #28 (CGAI-28: Autenticación Clerk)
🔧 Cambios Realizados
src/core/config/settings.py: Configuración con pydantic-settings para CLERK_SECRET_KEYsrc/external/clerk_client.py: Cliente para validar JWT con excepciones personalizadassrc/repositories/user_repo.py: CRUD para tabla users con SQLAlchemysrc/services/auth_service.py: Orquestación de login con get_or_createsrc/core/dependencies/auth.py: Dependencia FastAPI para rutas protegidassrc/routers/auth.py: Endpoints POST /login y GET /mesrc/main.py: Registro del auth_routertests/generate_jwt.py: Script para generar tokens de prueba🧪 Cómo se Probó
✅ Checklist Previo al Merge
📸 Screenshots
📚 Notas Adicionales
email,name,rolesub(user_id) a todos los tokensgetToken({ template: "supabase" })para obtener el JWT