diff --git a/extensions/devices.py b/extensions/devices.py index a31d84e..d4cb0e0 100644 --- a/extensions/devices.py +++ b/extensions/devices.py @@ -30,6 +30,7 @@ async def devices_get_by_name(name: str, apikey: APIKey = Depends(get_api_key)): device = col_devices.find_one({"user": user_by_key(apikey), "name": name}) if device is not None: del device["_id"] + del device["user"] return UJSONResponse(device) else: raise HTTPException(HTTP_404_NOT_FOUND, detail="Could not find device with that name.") @@ -46,7 +47,7 @@ async def devices_delete_by_name(name: str, apikey: APIKey = Depends(get_api_key raise HTTPException(HTTP_404_NOT_FOUND, detail="Could not find device with that name.") @app.post("/devices", response_class=UJSONResponse, description="Create new device") -async def devices_post(name: str, os: str, apikey: APIKey = Depends(get_api_key)): +async def devices_post(name: str, os: str, client: str, apikey: APIKey = Depends(get_api_key)): user = user_by_key(apikey) @@ -62,7 +63,7 @@ async def devices_post(name: str, os: str, apikey: APIKey = Depends(get_api_key) if col_devices.find_one({"user": user, "name": name}) is not None: raise HTTPException(HTTP_409_CONFLICT, detail="Device with this name already exists.") - col_devices.insert_one({"user": user, "name": name, "os": os, "last_save": 0}) + col_devices.insert_one({"user": user, "name": name, "os": os, "client": client, "last_save": 0}) return Response(status_code=HTTP_204_NO_CONTENT) diff --git a/models/devices.py b/models/devices.py index d643b0f..6625ed2 100644 --- a/models/devices.py +++ b/models/devices.py @@ -4,4 +4,5 @@ class Device(BaseModel): user: str name: str os: str + client: str last_save: int \ No newline at end of file diff --git a/modules/app.py b/modules/app.py index 15bf194..e5443f5 100644 --- a/modules/app.py +++ b/modules/app.py @@ -13,13 +13,11 @@ app = FastAPI(title="Stardew Sync", docs_url=None, redoc_url=None, version="0.1" api_key_query = APIKeyQuery(name="apikey", auto_error=False) api_key_header = APIKeyHeader(name="apikey", auto_error=False) -api_key_cookie = APIKeyCookie(name="apikey", auto_error=False) async def get_api_key( api_key_query: str = Security(api_key_query), api_key_header: str = Security(api_key_header), - api_key_cookie: str = Security(api_key_cookie), ) -> str: def is_valid(key): @@ -29,10 +27,8 @@ async def get_api_key( return api_key_query elif is_valid(api_key_header): return api_key_header - elif is_valid(api_key_cookie): - return api_key_cookie else: - if (col_expired.find_one({"hash": passEncode(api_key_query)}) is not None) or (col_expired.find_one({"hash": passEncode(api_key_header)}) is not None) or (col_expired.find_one({"hash": passEncode(api_key_cookie)}) is not None): + if (col_expired.find_one({"hash": passEncode(api_key_query)}) is not None) or (col_expired.find_one({"hash": passEncode(api_key_header)}) is not None): raise HTTPException(status_code=HTTP_403_FORBIDDEN, detail=configGet("key_expired", "messages")) else: raise HTTPException(status_code=HTTP_401_UNAUTHORIZED, detail=configGet("key_invalid", "messages")) diff --git a/validation/devices.json b/validation/devices.json index e2d56d1..a068f3c 100644 --- a/validation/devices.json +++ b/validation/devices.json @@ -4,6 +4,7 @@ "user", "name", "os", + "client", "last_save" ], "properties": { @@ -16,6 +17,9 @@ "os": { "bsonType": "string" }, + "client": { + "bsonType": "string" + }, "last_save": { "bsonType": ["int", "double"] }