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