thực hiện phân quyền admin giáo viên và học sinh xong

This commit is contained in:
2026-04-01 19:26:47 +07:00
parent 8546d41a26
commit 386871bd4a
14 changed files with 796 additions and 37 deletions
+17
View File
@@ -1,6 +1,9 @@
from datetime import datetime, timezone
import enum
from sqlalchemy import (
Column,
Enum,
Integer,
String,
Text,
@@ -13,6 +16,18 @@ from sqlalchemy.orm import relationship
from .database import Base
class UserRole(str, enum.Enum):
admin = "admin"
teacher = "teacher"
student = "student"
class UserStatus(str, enum.Enum):
pending = "pending"
approved = "approved"
rejected = "rejected"
class User(Base):
__tablename__ = "users"
@@ -20,6 +35,8 @@ class User(Base):
username = Column(String(64), unique=True, nullable=False, index=True)
email = Column(String(255), unique=True, nullable=False, index=True)
password_hash = Column(String(255), nullable=False)
role = Column(Enum(UserRole, name="user_role"), nullable=False, default=UserRole.student)
status = Column(Enum(UserStatus, name="user_status"), nullable=False, default=UserStatus.pending)
created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), nullable=False)
# Relationships