implemented delivery of user files

This commit is contained in:
2025-09-29 21:00:38 +02:00
parent d18dfe1f84
commit 152ebb3a20
2 changed files with 26 additions and 2 deletions

View File

@@ -131,7 +131,25 @@ public class FileModule extends BaseHandler implements FileService {
return map;
}
private boolean getUserFiles(Path path, HttpExchange ex, UmbrellaUser user) {
return false;
private boolean getUserFiles(Path path, HttpExchange ex, UmbrellaUser user) throws IOException {
var userId = path.pop();
if (userId == null) throw missingFieldException(USER_ID);
long uid;
try {
uid = Long.parseLong(userId);
} catch (NumberFormatException e) {
throw invalidFieldException(PROJECT_ID,"Long");
}
var filename = "/user/"+uid;
if (!path.empty()) filename += "/"+URLDecoder.decode(path.toString(),UTF_8);
if (uid != user.id() && !fileDb.isPermitted(user,filename)) throw forbidden("You are not allowed to access {0}",filename);
var file = new File(baseDir+filename);
if (!file.exists()) throw unprocessable("{0} does not exist!",filename);
if (file.isDirectory()){
Map<String,Object> map = getDirectory(file);
map.put("title",filename);
return sendContent(ex,map);
}
return getFile(ex, file);
}
}