Endpoints
POST /auth/login
Authenticates a user and creates a session. Blueprint:authMethods:
GET, POSTTemplate:
auth/login.htmlLogin Required: No
Form Fields
User’s document ID (used as username)
User’s password
Response Behavior
On Success:- Creates authenticated session using Flask-Login
- Redirects based on user role:
admin→admin.manage_usersbibliotecario→admin.admin_dashboardpremium,cliente→main.premium_dashboard- Other roles →
main.index
- Flash message:
"Documento o contraseña inválidos." - Re-renders login form
Example
app/auth/routes.py:8
POST /auth/register
Registers a new user account. Blueprint:authMethods:
GET, POSTTemplate:
auth/register.htmlLogin Required: No
Form Fields
User’s full name
Unique document ID (must not exist in system)
Email address (must be unique)
Phone number
User role: ‘cliente’, ‘premium’, ‘bibliotecario’, or ‘admin’
Required only if role is ‘cliente’ - academic program name
Password (will be hashed before storage)
Validation Rules
- Document ID must be unique
- Email must be unique
program_namerequired only for ‘cliente’ role- Password is hashed using
user.set_password()before storage
Response Behavior
On Success:- User created and saved to database
- Flash message:
"¡Registro exitoso! Ahora puede iniciar sesión con su número de documento." - Redirects to login page
- Flash message:
"El número de documento ya está registrado." - Re-renders registration form
- Flash message:
"La dirección de correo electrónico ya está registrada." - Re-renders registration form
Example
app/auth/routes.py:35
GET /auth/logout
Logs out the current user and destroys the session. Blueprint:authMethods:
GETLogin Required: No (but only effective if logged in)
Response Behavior
- Calls
logout_user()from Flask-Login - Flash message:
"Ha cerrado la sesión exitosamente." - Redirects to login page
Example
app/auth/routes.py:68
Authentication Flow
Role-Based Redirection
After successful login, users are redirected based on their role:Session Management
- Sessions use Flask-Login’s
login_user()withremember=False - Logout clears session data completely
- All authenticated routes check
current_user.is_authenticated
Security Features
- CSRF protection via WTForms
- Password hashing using Werkzeug
- Automatic redirect for authenticated users accessing login/register
- Document ID used as unique username