2ND
This commit is contained in:
52
init_db.py
52
init_db.py
@@ -1,40 +1,24 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
import secrets
|
||||
import string
|
||||
from flask import Flask
|
||||
from werkzeug.security import generate_password_hash
|
||||
from models import db, User
|
||||
from models import db
|
||||
from config import Config
|
||||
|
||||
def create_default_admin(app):
|
||||
"""在應用程式上下文中建立一個預設的管理員帳號。"""
|
||||
with app.app_context():
|
||||
# 檢查管理員是否已存在
|
||||
if User.query.filter_by(username='admin').first():
|
||||
print("ℹ️ 'admin' 使用者已存在,跳過建立程序。")
|
||||
return
|
||||
|
||||
# 產生一個安全隨機的密碼
|
||||
password_length = 12
|
||||
alphabet = string.ascii_letters + string.digits + '!@#$%^&*()'
|
||||
password = ''.join(secrets.choice(alphabet) for i in range(password_length))
|
||||
|
||||
# 建立新使用者
|
||||
admin_user = User(
|
||||
username='admin',
|
||||
password_hash=generate_password_hash(password),
|
||||
role='admin'
|
||||
)
|
||||
db.session.add(admin_user)
|
||||
db.session.commit()
|
||||
|
||||
print("✅ 預設管理員帳號已建立!")
|
||||
print(" ===================================")
|
||||
print(f" 👤 使用者名稱: admin")
|
||||
print(f" 🔑 密碼: {password}")
|
||||
print(" ===================================")
|
||||
print(" 請妥善保管此密碼,並在首次登入後考慮變更。")
|
||||
def create_admin_note():
|
||||
"""顯示 LDAP 管理員設定說明。"""
|
||||
print("✅ 資料庫已初始化!")
|
||||
print(" ===================================")
|
||||
print(" 📋 LDAP 管理員設定說明")
|
||||
print(" ===================================")
|
||||
print(" 由於系統使用 LDAP 驗證,管理員權限需要在首次登入後手動設定。")
|
||||
print(" ")
|
||||
print(" 步驟:")
|
||||
print(" 1. 使用 AD 帳號登入系統")
|
||||
print(" 2. 直接在資料庫中將該用戶的 role 更新為 'admin'")
|
||||
print(" 3. 或修改 auth.py 中新用戶的預設權限設定")
|
||||
print(" ")
|
||||
print(" SQL 範例:")
|
||||
print(" UPDATE ts_user SET role='admin' WHERE username='你的AD帳號';")
|
||||
print(" ===================================")
|
||||
|
||||
def init_database(app):
|
||||
"""初始化資料庫:刪除所有現有資料表並重新建立。"""
|
||||
@@ -66,7 +50,7 @@ if __name__ == '__main__':
|
||||
|
||||
if confirmation.lower() == 'yes':
|
||||
init_database(app)
|
||||
create_default_admin(app)
|
||||
create_admin_note()
|
||||
print("\n🎉 全部完成!")
|
||||
else:
|
||||
print("❌ 操作已取消。")
|
Reference in New Issue
Block a user