mirror of
https://github.com/wangdage12/Snap.Server.git
synced 2026-02-17 08:52:10 +08:00
修复问题
This commit is contained in:
@@ -4,4 +4,5 @@ pycryptodome==3.20.0
|
||||
PyJWT==2.10.1
|
||||
pymongo==4.15.5
|
||||
Werkzeug==3.1.4
|
||||
sentry-sdk[flask]
|
||||
sentry-sdk[flask]
|
||||
gunicorn
|
||||
@@ -4,7 +4,7 @@ from services.auth_service import (
|
||||
decrypt_data, send_verification_email, verify_user_credentials,
|
||||
create_user_account, get_user_by_id
|
||||
)
|
||||
from app.extensions import generate_code, logger
|
||||
from app.extensions import generate_code, logger , config_loader
|
||||
|
||||
auth_bp = Blueprint("auth", __name__)
|
||||
|
||||
@@ -148,7 +148,7 @@ def passport_login():
|
||||
"data": {
|
||||
"AccessToken": access_token,
|
||||
"RefreshToken": access_token,
|
||||
"ExpiresIn": 3600
|
||||
"ExpiresIn": config_loader.JWT_EXPIRATION_HOURS * 3600
|
||||
}
|
||||
})
|
||||
|
||||
@@ -225,7 +225,7 @@ def passport_refresh_token():
|
||||
"data": {
|
||||
"AccessToken": access_token,
|
||||
"RefreshToken": access_token,
|
||||
"ExpiresIn": 3600
|
||||
"ExpiresIn": config_loader.JWT_EXPIRATION_HOURS * 3600
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ from flask import Blueprint, request, jsonify
|
||||
from app.utils.jwt_utils import verify_token, create_token
|
||||
from services.auth_service import verify_user_credentials, get_users_with_search
|
||||
from app.decorators import require_maintainer_permission
|
||||
from app.extensions import generate_numeric_id, client, logger
|
||||
from app.extensions import generate_numeric_id, client, logger, config_loader
|
||||
|
||||
web_api_bp = Blueprint("web_api", __name__)
|
||||
|
||||
@@ -36,7 +36,7 @@ def web_api_login():
|
||||
"message": "success",
|
||||
"data": {
|
||||
"access_token": access_token,
|
||||
"expires_in": 3600
|
||||
"expires_in": config_loader.JWT_EXPIRATION_HOURS * 3600
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
21
run.py
21
run.py
@@ -1,6 +1,21 @@
|
||||
from app import create_app
|
||||
from app.init import create_app
|
||||
from app.config_loader import config_loader
|
||||
import sentry_sdk
|
||||
|
||||
sentry_sdk.init(
|
||||
dsn="https://d1cad1d2b442cf8431df3ee4bab925e0@o4507525750521856.ingest.us.sentry.io/4510623668830208",
|
||||
# Add data like request headers and IP for users,
|
||||
# see https://docs.sentry.io/platforms/python/data-management/data-collected/ for more info
|
||||
send_default_pii=True,
|
||||
traces_sample_rate=1.0,
|
||||
)
|
||||
|
||||
# 创建应用实例
|
||||
app = create_app()
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(debug=True)
|
||||
if __name__ == '__main__':
|
||||
app.run(
|
||||
host=config_loader.SERVER_HOST,
|
||||
port=config_loader.SERVER_PORT,
|
||||
debug=config_loader.SERVER_DEBUG
|
||||
)
|
||||
@@ -1,20 +1,23 @@
|
||||
import datetime
|
||||
from bson import ObjectId
|
||||
from werkzeug.security import generate_password_hash, check_password_hash
|
||||
from app.extensions import client, logger
|
||||
from app.config import Config
|
||||
|
||||
from Crypto.Cipher import PKCS1_OAEP
|
||||
from Crypto.PublicKey import RSA
|
||||
from app.config_loader import config_loader
|
||||
from datetime import timezone
|
||||
from zoneinfo import ZoneInfo
|
||||
import datetime
|
||||
import SendEmailTool
|
||||
import re
|
||||
import base64
|
||||
|
||||
def decrypt_data(encrypted_data):
|
||||
"""使用RSA私钥解密数据"""
|
||||
try:
|
||||
from Crypto.Cipher import PKCS1_OAEP
|
||||
from Crypto.PublicKey import RSA
|
||||
import base64
|
||||
from app.config_loader import config_loader
|
||||
|
||||
private_key_file = config_loader.RSA_PRIVATE_KEY_FILE
|
||||
private_key = RSA.import_key(open(private_key_file).read())
|
||||
with open(private_key_file, 'r') as f:
|
||||
private_key = RSA.import_key(f.read())
|
||||
cipher = PKCS1_OAEP.new(private_key)
|
||||
decrypted_data = cipher.decrypt(base64.b64decode(encrypted_data))
|
||||
return decrypted_data.decode()
|
||||
@@ -26,8 +29,6 @@ def decrypt_data(encrypted_data):
|
||||
def send_verification_email(email, code):
|
||||
"""发送验证码邮件"""
|
||||
try:
|
||||
import SendEmailTool
|
||||
|
||||
subject = "Snap Hutao 验证码"
|
||||
body = f"您的验证码是: {code}"
|
||||
|
||||
@@ -74,8 +75,9 @@ def create_user_account(email, password):
|
||||
"CreatedAt": datetime.datetime.utcnow(),
|
||||
"IsLicensedDeveloper": False,
|
||||
"IsMaintainer": False,
|
||||
"GachaLogExpireAt": "2026-01-01T00:00:00Z",
|
||||
"CdnExpireAt": "2026-01-01T00:00:00Z"
|
||||
# 现在默认用户的上传权限不过期
|
||||
"GachaLogExpireAt": "2099-01-01T00:00:00Z",
|
||||
"CdnExpireAt": "2099-01-01T00:00:00Z"
|
||||
}
|
||||
|
||||
result = client.ht_server.users.insert_one(new_user)
|
||||
@@ -91,7 +93,8 @@ def get_user_by_id(user_id):
|
||||
if user:
|
||||
user['_id'] = str(user['_id'])
|
||||
return user
|
||||
except:
|
||||
except Exception as e:
|
||||
logger.error(f"Error retrieving user by ID: {e}")
|
||||
return None
|
||||
|
||||
|
||||
@@ -119,18 +122,6 @@ def get_users_with_search(query_text=""):
|
||||
or_conditions.append({
|
||||
"_id": ObjectId(query_text)
|
||||
})
|
||||
else:
|
||||
# 允许部分 ObjectId 搜索(转字符串后匹配)
|
||||
or_conditions.append({
|
||||
"_id": {
|
||||
"$in": [
|
||||
u["_id"] for u in client.ht_server.users.find(
|
||||
{},
|
||||
{"_id": 1}
|
||||
) if query_text.lower() in str(u["_id"]).lower()
|
||||
]
|
||||
}
|
||||
})
|
||||
|
||||
query = {"$or": or_conditions}
|
||||
|
||||
@@ -145,9 +136,6 @@ def get_users_with_search(query_text=""):
|
||||
users = list(users_map.values())
|
||||
|
||||
# 数据格式化
|
||||
from datetime import timezone
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
CST = ZoneInfo("Asia/Shanghai")
|
||||
|
||||
for u in users:
|
||||
|
||||
Reference in New Issue
Block a user