Files
saas_backend/app/models/auth/sso_grant_model.py
T

32 lines
1.3 KiB
Python
Raw Normal View History

import uuid
from sqlalchemy import Column, String, Boolean, DateTime, func, ForeignKey
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import relationship
from app.config.database import Base
class SSOGrant(Base):
__tablename__ = "sso_grants"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
grant_code = Column(String, unique=True, nullable=False, index=True)
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=False, index=True)
module_id = Column(UUID(as_uuid=True), ForeignKey("modules.id"), nullable=False, index=True)
tenant_id = Column(UUID(as_uuid=True), ForeignKey("tenants.id"), nullable=True, index=True)
environment_slug = Column(String, nullable=False)
# redirect_url removed - stateless grants
is_used = Column(Boolean, default=False)
used_at = Column(DateTime(timezone=True), nullable=True)
expires_at = Column(DateTime(timezone=True), nullable=False) # 60 seconds
created_at = Column(DateTime(timezone=True), server_default=func.now())
user = relationship("User")
module = relationship("Module")
tenant = relationship("Tenant")
def __repr__(self):
return f"<SSOGrant {self.grant_code} for user {self.user_id}>"