from sqlalchemy import Column, Integer, String, Boolean, DateTime from datetime import datetime from database import Base class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True, index=True) username = Column(String, unique=True, index=True, nullable=False) email = Column(String, unique=True, index=True, nullable=False) password = Column(String, nullable=False) is_active = Column(Boolean, default=True) role = Column(String, default="user") created_at = Column(DateTime, default=datetime.utcnow) # ─── Verification Columns for SMTP Flow ─── is_verified = Column(Boolean, default=False) # must be True before login is allowed verification_code = Column(String, nullable=True) # stores the active registration OTP code reset_code = Column(String, nullable=True) # stores the active forgot password OTP code class RevokedToken(Base): __tablename__ = "revoked_tokens" id = Column(Integer, primary_key=True, index=True) token = Column(String, unique=True, index=True, nullable=False) revoked_at = Column(DateTime, default=datetime.utcnow) expires_at = Column(DateTime, nullable=False)