更新
This commit is contained in:
@@ -5,6 +5,28 @@ from .database import Base
|
||||
from utils.log_limits import bound_error_log_content, bound_message_log_content
|
||||
|
||||
|
||||
class Role(Base):
|
||||
"""Assignable role with a fixed permission-code list.
|
||||
|
||||
``users.role`` stores ``Role.code``. Built-in roles are seeded on startup;
|
||||
custom roles are owned by admins via the users.manage permission.
|
||||
"""
|
||||
|
||||
__tablename__ = "roles"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
code = Column(String(50), unique=True, index=True, nullable=False)
|
||||
label = Column(String(100), nullable=False)
|
||||
description = Column(String(255), nullable=True)
|
||||
is_system = Column(Boolean, default=False)
|
||||
# Global data scope + unlimited account quota. Only the built-in admin
|
||||
# role may be true; custom roles are always own-scoped.
|
||||
is_admin = Column(Boolean, default=False)
|
||||
permissions = Column(Text, nullable=False, default="[]") # JSON string list
|
||||
created_at = Column(DateTime, default=datetime.utcnow)
|
||||
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||
|
||||
|
||||
class User(Base):
|
||||
__tablename__ = "users"
|
||||
|
||||
@@ -13,7 +35,7 @@ class User(Base):
|
||||
email = Column(String(255), unique=True, index=True, nullable=True)
|
||||
password_hash = Column(String(255), nullable=False)
|
||||
display_name = Column(String(100), nullable=True)
|
||||
role = Column(String(20), default="operator", index=True) # admin, operator, viewer
|
||||
role = Column(String(50), default="operator", index=True) # roles.code
|
||||
is_active = Column(Boolean, default=True)
|
||||
email_verified = Column(Boolean, default=False)
|
||||
email_verified_at = Column(DateTime, nullable=True)
|
||||
|
||||
Reference in New Issue
Block a user