Eliminated the `RevokedToken` model and associated logic for managing token revocation. Removed unused files, related tests, and outdated dependencies in authentication modules. Simplified token decoding, user validation, and dependency injection by streamlining the flow and enhancing maintainability.
30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
from sqlalchemy import Column, String, JSON, Boolean
|
|
from sqlalchemy.orm import relationship
|
|
from .base import Base, TimestampMixin, UUIDMixin
|
|
|
|
|
|
class User(Base, UUIDMixin, TimestampMixin):
|
|
__tablename__ = 'users'
|
|
|
|
email = Column(String, unique=True, nullable=False, index=True)
|
|
password_hash = Column(String, nullable=False)
|
|
first_name = Column(String, nullable=False)
|
|
last_name = Column(String, nullable=False)
|
|
phone_number = Column(String)
|
|
is_active = Column(Boolean, default=True, nullable=False)
|
|
is_superuser = Column(Boolean, default=False, nullable=False)
|
|
preferences = Column(JSON)
|
|
|
|
# Fix relationships with explicit foreign_keys
|
|
created_events = relationship("Event", back_populates="creator", foreign_keys="Event.created_by")
|
|
|
|
# Specify which foreign key to use in EventManager (this is the key fix)
|
|
managed_events = relationship(
|
|
"EventManager",
|
|
back_populates="user",
|
|
foreign_keys="EventManager.user_id"
|
|
)
|
|
guest_profiles = relationship("Guest", back_populates="user", foreign_keys="Guest.user_id")
|
|
|
|
def __repr__(self):
|
|
return f"<User {self.email}>" |