fix(auth): flexibilizar login por email/usuario, asegurar hash admin123 y corregir cookies sobre HTTP

This commit is contained in:
2026-09-23 14:59:46 -03:00
parent bddd382c96
commit b540015b7e
7 changed files with 47 additions and 20 deletions
+18 -3
View File
@@ -1,5 +1,5 @@
from typing import Optional, List
from sqlalchemy import func
from sqlalchemy import func, or_
from app.models.user import User
from app.repositories.base_repository import BaseRepository
@@ -10,10 +10,25 @@ class UserRepository(BaseRepository[User]):
super().__init__(User)
def get_by_email(self, email: str) -> Optional[User]:
"""Obtiene un usuario por su dirección de email normalizada."""
"""Obtiene un usuario por su dirección de email normalizada o alias de usuario."""
if not email:
return None
return User.query.filter(func.lower(User.email) == email.strip().lower()).first()
clean = email.strip().lower()
user = User.query.filter(func.lower(User.email) == clean).first()
if user:
return user
# Si el usuario ingresó solo el nombre de cuenta (ej. 'admin' o 'bedelia')
if '@' not in clean:
user = User.query.filter(
or_(
func.lower(User.email) == f"{clean}@edu-space.com",
func.lower(User.name) == clean,
func.lower(User.role) == clean.upper()
)
).first()
if user:
return user
return None
def get_active_users(self) -> List[User]:
"""Obtiene todos los usuarios con cuenta activa."""