Merge pull request #702 from wanxunyang/feature/app-message-log
fix: add tenant status check on token refresh
This commit is contained in:
@@ -35,10 +35,6 @@ class Tenants(Base):
|
||||
api_ops_rate_limit = Column(String(100), nullable=True) # API 调用频率限制
|
||||
status = Column(String(50), nullable=True, default='active') # 租户状态
|
||||
|
||||
# 租户功能开关字段
|
||||
feature_billing = Column(Boolean, default=False, nullable=False, server_default='false', comment="是否启用收费管理菜单")
|
||||
feature_user_management = Column(Boolean, default=False, nullable=False, server_default='false', comment="是否启用用户管理菜单")
|
||||
|
||||
# Relationship to users - one tenant has many users
|
||||
users = relationship("User", back_populates="tenant")
|
||||
|
||||
|
||||
@@ -19,18 +19,22 @@ class UserRepository:
|
||||
self.db = db
|
||||
|
||||
def get_user_by_id(self, user_id: uuid.UUID) -> Optional[User]:
|
||||
"""根据ID获取用户"""
|
||||
db_logger.debug(f"根据ID查询用户: user_id={user_id}")
|
||||
"""根据 ID 获取用户(租户禁用时返回 None)"""
|
||||
db_logger.debug(f"根据 ID 查询用户:user_id={user_id}")
|
||||
|
||||
try:
|
||||
user = self.db.query(User).options(joinedload(User.tenant)).filter(User.id == user_id).first()
|
||||
if user:
|
||||
db_logger.debug(f"用户查询成功: {user.username} (ID: {user_id})")
|
||||
# 检查租户状态,租户禁用时返回 None
|
||||
if user.tenant and not user.tenant.is_active:
|
||||
db_logger.warning(f"用户 {user.username} (ID: {user_id}) 所属租户 {user.tenant_id} 已被禁用")
|
||||
return None
|
||||
db_logger.debug(f"用户查询成功:{user.username} (ID: {user_id})")
|
||||
else:
|
||||
db_logger.debug(f"用户不存在: user_id={user_id}")
|
||||
db_logger.debug(f"用户不存在:user_id={user_id}")
|
||||
return user
|
||||
except Exception as e:
|
||||
db_logger.error(f"根据ID查询用户失败: user_id={user_id} - {str(e)}")
|
||||
db_logger.error(f"根据 ID 查询用户失败:user_id={user_id} - {str(e)}")
|
||||
raise
|
||||
|
||||
def get_user_by_email(self, email: str) -> Optional[User]:
|
||||
|
||||
Reference in New Issue
Block a user