Fix login issue

This commit is contained in:
Urtzi Alfaro
2025-07-20 21:29:58 +02:00
parent a6c3647180
commit daab1b77e1
4 changed files with 6 additions and 42 deletions

View File

@@ -104,13 +104,7 @@ async def login(
try:
# Check login attempts
if not await SecurityManager.check_login_attempts(login_data.email):
if metrics:
metrics.increment_counter("login_failure_total", labels={"reason": "rate_limited"})
raise HTTPException(
status_code=status.HTTP_429_TOO_MANY_REQUESTS,
detail="Too many login attempts. Please try again later."
)
# Attempt login
result = await AuthService.login(login_data.email, login_data.password, db)

View File

@@ -60,7 +60,7 @@ class RefreshToken(Base):
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
user_id = Column(UUID(as_uuid=True), nullable=False, index=True) # No FK - cross-service
token = Column(String(255), unique=True, nullable=False)
token = Column(Text, unique=True, nullable=False) # CHANGED FROM String(255) TO Text
expires_at = Column(DateTime(timezone=True), nullable=False)
is_revoked = Column(Boolean, default=False)

View File

@@ -109,16 +109,12 @@ class AuthService:
detail="Invalid credentials"
)
# Get user's tenant memberships from tenant service
tenant_memberships = await AuthService._get_user_tenants(str(user.id))
# Create tokens
access_token = SecurityManager.create_access_token(
user_data={
"user_id": str(user.id),
"email": user.email,
"full_name": user.full_name,
"tenants": tenant_memberships # Include tenant info in token
"full_name": user.full_name
}
)
@@ -140,8 +136,7 @@ class AuthService:
"access_token": access_token,
"refresh_token": refresh_token_value,
"token_type": "bearer",
"user": user.to_dict(),
"tenants": tenant_memberships
"user": user.to_dict()
}
except HTTPException:
@@ -201,16 +196,12 @@ class AuthService:
detail="User not found"
)
# Get user's tenant memberships from tenant service
tenant_memberships = await AuthService._get_user_tenants(str(user.id))
# Create new access token
access_token = SecurityManager.create_access_token(
user_data={
"user_id": str(user.id),
"email": user.email,
"full_name": user.full_name,
"tenants": tenant_memberships
"full_name": user.full_name
}
)
@@ -269,23 +260,3 @@ class AuthService:
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Invalid token"
)
@staticmethod
async def _get_user_tenants(user_id: str) -> list:
"""Get user's tenant memberships from tenant service"""
try:
async with httpx.AsyncClient() as client:
response = await client.get(
f"{settings.TENANT_SERVICE_URL}/api/v1/tenants/user/{user_id}/memberships",
timeout=5.0
)
if response.status_code == 200:
return response.json()
else:
logger.warning(f"Failed to get user tenants: {response.status_code}")
return []
except Exception as e:
logger.error(f"Error getting user tenants: {e}")
return []

View File

@@ -48,7 +48,6 @@ class JWTHandler:
to_encode = {
"sub": user_data["user_id"],
"user_id": user_data["user_id"],
"email": user_data["email"],
"type": "refresh"
}