andrei dc47e4b003 feat: auth Добавлена поддержка сессий пользователей
Добавлена функциональность управления сессиями пользователей, включая создание сессий при входе, получение списка активных сессий, деактивацию отдельных сессий и деактивацию всех сессий пользователя.
2025-07-03 09:16:19 +05:00

35 lines
1.4 KiB
Python

from sqlalchemy import Column, Integer, VARCHAR, ForeignKey, String, Boolean
from sqlalchemy.orm import relationship
from werkzeug.security import check_password_hash, generate_password_hash
from app.domain.models.base import BaseModel
from app.settings import settings
class User(BaseModel):
__tablename__ = 'users'
__table_args__ = {"schema": settings.SCHEMA}
first_name = Column(VARCHAR(200), nullable=False)
last_name = Column(VARCHAR(200), nullable=False)
patronymic = Column(VARCHAR(200))
login = Column(String, nullable=False, unique=True)
password = Column(String, nullable=False)
is_blocked = Column(Boolean, nullable=False, default=False, server_default='false')
role_id = Column(Integer, ForeignKey(f'{settings.SCHEMA}.roles.id'), nullable=False)
role = relationship('Role', back_populates='users')
lens_issues = relationship('LensIssue', back_populates='doctor')
appointments = relationship('Appointment', back_populates='doctor')
mailing = relationship('Mailing', back_populates='user')
scheduled_appointments = relationship('ScheduledAppointment', back_populates='doctor')
sessions = relationship("Session", back_populates="user", cascade="all, delete-orphan")
def check_password(self, password):
return check_password_hash(self.password, password)
def set_password(self, password):
self.password = generate_password_hash(password)