53 lines
2.0 KiB
Python
53 lines
2.0 KiB
Python
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文件用于导入用户")
|
|
|