- Agrega splitPostgresStatements() que parsea SQL respetando dollar-quoting, strings y comentarios
- En ExecuteSQL, si es PostgreSQL y hay múltiples sentencias, cada una se ejecuta con su propio db.Exec()
- Evita el error: 'CREATE DATABASE cannot run inside a transaction block'
- Error ocurría porque PostgreSQL envuelve multi-statement en transacción implícita al usar simple query protocol
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Implemented VCard API controller with methods to manage configuration (save, get).
- Added proxy functions to handle API requests for users, vcards, memberships, payments, transactions, logs, and miniwebs.
- Included error handling and response formatting for API interactions.
- Nuevo modelo PortalPasswordResetToken con token seguro (32 bytes, 1h vigencia)
- AutoMigrate del nuevo modelo en main.go
- SendPortalPasswordResetEmail con diseño consistente al app
- Handlers: PortalForgotPasswordPage/Post y PortalResetPasswordPost/Page
- Rutas públicas GET/POST /portal/forgot-password y /portal/reset-password
- Vistas forgot_password.html y reset_password.html con validación JS
- Enlace ¿Olvidaste tu contraseña? en login.html + soporte mensaje success
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>