from flask import Flask, request, send_from_directory from dynaconf import FlaskDynaconf from flask_sqlalchemy import SQLAlchemy from flask_security import Security, SQLAlchemyUserDatastore, auth_required, hash_password, current_user, login_user, verify_password, roles_accepted, logout_user from flask_security.models import fsqla_v3 as fsqla from flask_socketio import SocketIO, join_room, leave_room, emit from flask_wtf import CSRFProtect import sys app = Flask("GalaxyMusicHall") FlaskDynaconf(app, settings_files=["instance/config.toml", "instance/.secrets.toml"], environments=True) db = SQLAlchemy(app) fsqla.FsModels.set_db_info(db) class Role(db.Model, fsqla.FsRoleMixin): pass class User(db.Model, fsqla.FsUserMixin): pass user_datastore = SQLAlchemyUserDatastore(db, User, Role) CSRFProtect(app) app.security = Security(app, user_datastore) if __name__ == "__main__": if len(sys.argv) > 1: with app.app_context(): print("初始化数据库...") db.create_all() app.security.datastore.find_or_create_role(name="admin") app.security.datastore.find_or_create_role(name="user") app.security.datastore.find_or_create_role(name="player") with open(sys.argv[1], "r", encoding="utf-8") as file: for i in file.readlines(): username, password = i.strip().split(',') print(username,password) if not app.security.datastore.find_user(username=username): app.security.datastore.create_user(username=username, email= username+"@null.com", password=hash_password(password)) user = app.security.datastore.find_user(username=username) app.security.datastore.add_role_to_user(user, "user") db.session.commit() else: print("数据库连接有效") print("请在参数1指定.csv文件用于导入用户")