user.py 1.3 KB

123456789101112131415161718192021222324252627
  1. # -*- coding: utf-8 -*-
  2. from datetime import datetime
  3. from sqlalchemy import Column, Integer, String, DateTime
  4. from werkzeug.security import generate_password_hash, check_password_hash
  5. from backend.database import Base
  6. class User(Base):
  7. __tablename__ = "users"
  8. id = Column(Integer, primary_key=True, index=True)
  9. username = Column(String(80), unique=True, nullable=False, index=True)
  10. password_hash = Column(String(255), nullable=False)
  11. role = Column(String(20), default="student") # student | teacher
  12. # 个人信息字段(可选),避免影响现有登录 / 权限逻辑
  13. full_name = Column(String(50), nullable=True) # 真实姓名
  14. student_id = Column(String(50), nullable=True) # 学号
  15. class_name = Column(String(100), nullable=True) # 班级,如“初二(3)班”
  16. grade = Column(String(20), nullable=True) # 年级,如“初一”“初二”
  17. email = Column(String(120), nullable=True)
  18. phone = Column(String(20), nullable=True)
  19. created_at = Column(DateTime, default=datetime.utcnow)
  20. def set_password(self, password: str) -> None:
  21. self.password_hash = generate_password_hash(password)
  22. def check_password(self, password: str) -> bool:
  23. return check_password_hash(self.password_hash, password)