better error

rework default user
This commit is contained in:
pythongosssss 2023-12-02 21:50:46 +00:00
parent 957b0dbbe8
commit 80f2eb7d3b
2 changed files with 31 additions and 14 deletions

View File

@ -28,8 +28,8 @@ class UserManager():
else: else:
self.users = {"default": "default"} self.users = {"default": "default"}
def get_request_user_id(self, request, default_user="default"): def get_request_user_id(self, request):
user = default_user user = "default"
if args.multi_user and "comfy-user" in request.headers: if args.multi_user and "comfy-user" in request.headers:
user = request.headers["comfy-user"] user = request.headers["comfy-user"]
@ -38,7 +38,7 @@ class UserManager():
return user return user
def get_request_user_filepath(self, request, file, type="userdata", default_user="default"): def get_request_user_filepath(self, request, file, type="userdata", create_dir=True):
global user_directory global user_directory
if type == "userdata": if type == "userdata":
@ -46,20 +46,24 @@ class UserManager():
else: else:
raise KeyError("Unknown filepath type:" + type) raise KeyError("Unknown filepath type:" + type)
user = self.get_request_user_id(request, default_user) user = self.get_request_user_id(request)
user_root = os.path.abspath(os.path.join(root_dir, user)) path = user_root = os.path.abspath(os.path.join(root_dir, user))
# prevent leaving /{type} # prevent leaving /{type}
if os.path.commonpath((root_dir, user_root)) != root_dir: if os.path.commonpath((root_dir, user_root)) != root_dir:
return None return None
# prevent leaving /{type}/{user} parent = user_root
path = os.path.abspath(os.path.join(user_root, file))
if os.path.commonpath((user_root, path)) != user_root:
return None
if not os.path.exists(user_root): if file is not None:
os.mkdir(user_root) # prevent leaving /{type}/{user}
path = os.path.abspath(os.path.join(user_root, file))
if os.path.commonpath((user_root, path)) != user_root:
return None
parent = os.path.join(path, os.pardir)
if create_dir and not os.path.exists(parent):
os.mkdir(parent)
return path return path
@ -86,10 +90,15 @@ class UserManager():
if args.multi_user: if args.multi_user:
return web.json_response(self.users) return web.json_response(self.users)
else: else:
return web.json_response(None) user_dir = self.get_request_user_filepath(request, None, create_dir=False)
return web.json_response(os.path.exists(user_dir))
@routes.post("/users") @routes.post("/users")
async def post_users(request): async def post_users(request):
body = await request.json() body = await request.json()
user_id = self.add_user(body["username"]) username = body["username"]
if username in self.users.values():
return web.json_response({"error": "Duplicate username."}, status=400)
user_id = self.add_user(username)
return web.json_response(user_id) return web.json_response(user_id)

View File

@ -61,7 +61,15 @@ export class UserSelectionScreen {
body: JSON.stringify({ username }), body: JSON.stringify({ username }),
}); });
if (resp.status >= 300) { if (resp.status >= 300) {
throw new Error("Error creating user: " + resp.status + " " + resp.statusText); let message = "Error creating user: " + resp.status + " " + resp.statusText;
try {
const res = await resp.json();
if(res.error) {
message = res.error;
}
} catch (error) {
}
throw new Error(message);
} }
r({ username, userId: await resp.json(), created: true }); r({ username, userId: await resp.json(), created: true });