Добавлена функциональность управления сессиями пользователей, включая создание сессий при входе, получение списка активных сессий, деактивацию отдельных сессий и деактивацию всех сессий пользователя.
35 lines
1.4 KiB
Python
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)
|