This commit is contained in:
Your Name
2026-08-07 17:51:57 +08:00
parent 6119fdd767
commit 327a0bc42f
29 changed files with 1610 additions and 579 deletions
+6
View File
@@ -275,6 +275,12 @@ def migrate_users_table(conn) -> None:
"max_accounts",
{"default": "ALTER TABLE users ADD COLUMN max_accounts INTEGER DEFAULT 3"},
)
add_column_if_missing(
conn,
"users",
"created_by",
{"default": "ALTER TABLE users ADD COLUMN created_by INTEGER"},
)
cols = _table_columns(conn, "users")
if not cols:
return
+8 -1
View File
@@ -9,7 +9,7 @@ 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.
custom roles are owned by admins via the users.manage / roles.manage permissions.
"""
__tablename__ = "roles"
@@ -40,6 +40,13 @@ class User(Base):
email_verified = Column(Boolean, default=False)
email_verified_at = Column(DateTime, nullable=True)
max_accounts = Column(Integer, default=3)
# User who created this account via「用户管理」; null for self-register / seeded.
created_by = Column(
Integer,
ForeignKey("users.id", ondelete="SET NULL"),
nullable=True,
index=True,
)
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)