feat: auto remove old skim user
This commit is contained in:
@ -16,9 +16,10 @@ from cryptography.hazmat.primitives import serialization, hashes
|
||||
from cryptography.hazmat.primitives.asymmetric import padding
|
||||
from dotenv import load_dotenv
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
load_dotenv()
|
||||
|
||||
env_path = Path(__file__).parent.parent / ".env"
|
||||
load_dotenv(dotenv_path=env_path)
|
||||
FILES_URL = os.getenv("FILES_URL")
|
||||
|
||||
class AuthService:
|
||||
@ -219,8 +220,22 @@ class AuthService:
|
||||
if len(contents) > max_size:
|
||||
raise HTTPException(status_code=400, detail="File too large (max 2MB)")
|
||||
|
||||
# Создаем папку для скинов, если ее нет
|
||||
# Удаляем старый скин, если есть
|
||||
user = await users_collection.find_one({"username": username})
|
||||
if user and user.get("skin_url"):
|
||||
from urllib.parse import urlparse
|
||||
import os
|
||||
old_url = user["skin_url"]
|
||||
# Получаем имя файла из url
|
||||
old_filename = os.path.basename(urlparse(old_url).path)
|
||||
old_path = os.path.join("skins", old_filename)
|
||||
if os.path.exists(old_path):
|
||||
try:
|
||||
os.remove(old_path)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Создаем папку для скинов, если ее нет
|
||||
from pathlib import Path
|
||||
skin_dir = Path("skins")
|
||||
skin_dir.mkdir(exist_ok=True)
|
||||
@ -271,7 +286,6 @@ class AuthService:
|
||||
|
||||
async def set_cape(self, username: str, cape_file: UploadFile):
|
||||
"""Установка или замена плаща через загрузку файла (PNG или GIF)"""
|
||||
# Проверяем тип файла
|
||||
if not cape_file.content_type.startswith('image/'):
|
||||
raise HTTPException(status_code=400, detail="File must be an image")
|
||||
|
||||
@ -284,27 +298,35 @@ class AuthService:
|
||||
else:
|
||||
raise HTTPException(status_code=400, detail="Only PNG and GIF capes are supported")
|
||||
|
||||
# Проверяем размер файла (максимум 2MB)
|
||||
max_size = 2 * 1024 * 1024 # 2MB
|
||||
contents = await cape_file.read()
|
||||
if len(contents) > max_size:
|
||||
raise HTTPException(status_code=400, detail="File too large (max 2MB)")
|
||||
|
||||
# Создаем папку для плащей, если ее нет
|
||||
# Удаляем старый плащ, если есть
|
||||
user = await users_collection.find_one({"username": username})
|
||||
if user and user.get("cloak_url"):
|
||||
from urllib.parse import urlparse
|
||||
import os
|
||||
old_url = user["cloak_url"]
|
||||
old_filename = os.path.basename(urlparse(old_url).path)
|
||||
old_path = os.path.join("capes", old_filename)
|
||||
if os.path.exists(old_path):
|
||||
try:
|
||||
os.remove(old_path)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
from pathlib import Path
|
||||
cape_dir = Path("capes")
|
||||
cape_dir.mkdir(exist_ok=True)
|
||||
|
||||
# Генерируем имя файла с правильным расширением
|
||||
cape_filename = f"{username}_{int(datetime.now().timestamp())}.{ext}"
|
||||
cape_path = cape_dir / cape_filename
|
||||
|
||||
# Сохраняем файл
|
||||
with open(cape_path, "wb") as f:
|
||||
f.write(contents)
|
||||
|
||||
# Обновляем запись пользователя
|
||||
result = await users_collection.update_one(
|
||||
{"username": username},
|
||||
{"$set": {
|
||||
|
@ -1,10 +1,12 @@
|
||||
from motor.motor_asyncio import AsyncIOMotorClient
|
||||
from dotenv import load_dotenv
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
load_dotenv()
|
||||
env_path = Path(__file__).parent.parent / ".env"
|
||||
load_dotenv(dotenv_path=env_path)
|
||||
|
||||
MONGO_URI = os.getenv("MONGO_URI", "mongodb://localhost:32768")
|
||||
MONGO_URI = os.getenv("MONGO_URI")
|
||||
DB_NAME = "minecraft_auth"
|
||||
|
||||
client = AsyncIOMotorClient(MONGO_URI)
|
||||
|
@ -2,9 +2,13 @@ from jose import jwt, JWTError
|
||||
from passlib.context import CryptContext
|
||||
from datetime import datetime, timedelta
|
||||
import os
|
||||
from pathlib import Path
|
||||
from dotenv import load_dotenv
|
||||
|
||||
# Настройки
|
||||
SECRET_KEY = os.getenv("SECRET_KEY", "secret")
|
||||
env_path = Path(__file__).parent.parent / ".env"
|
||||
load_dotenv(dotenv_path=env_path)
|
||||
|
||||
SECRET_KEY = os.getenv("SECRET_KEY")
|
||||
ALGORITHM = "HS256"
|
||||
ACCESS_TOKEN_EXPIRE_MINUTES = 1440 # 24 часа
|
||||
|
||||
|
Reference in New Issue
Block a user