/
tsps
/
core
Обзор
Документация
Войти
/
tsps
/
core
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
app/models/admin.py
34 строки
1 KB
Василий Петров
Добавлены роли Админа
24 мар 2026, 17:09
24 мар 2026, 17:09
da1c587
Код
Авторство
О чём код?
from __future__ import annotations from sqlalchemy import Column, Integer, String import bcrypt bcrypt.__about__ = bcrypt # Обходим AttributeError: module 'bcrypt' has no attribute '__about__' from passlib.context import CryptContext from app.database import Base pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") class Admin(Base): __tablename__ = "admin" id = Column(Integer, primary_key=True, index=True) email = Column(String(255), unique=True, index=True, nullable=False) first_name = Column(String(100), nullable=False) last_name = Column(String, nullable=False) hashed_password = Column(String(255), nullable=False) role = Column(String(50), nullable=False, server_default="superadmin") def set_password(self, password: str): self.hashed_password = pwd_context.hash(password) def verify_password(self, password: str) -> bool: return pwd_context.verify(password, self.hashed_password) def __repr__(self): return f"<Admin(id={self.id}, email='{self.email}', first_name='{self.first_name}', last_name='{self.last_name}')>" @classmethod def get_system_bot(cls, db) -> Admin | None: """ Возвращает системного бота-админа для автоматических задач. """ return db.query(cls).filter(cls.email == "bot@system.internal").first()