implemented creation of directory within user folder

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2025-09-30 14:31:58 +02:00
parent f57be465a9
commit 06118365b8
3 changed files with 29 additions and 7 deletions

View File

@@ -199,15 +199,36 @@ public class FileModule extends BaseHandler implements FileService {
return getFile(ex, file);
}
private boolean postCompanyDirectory(Path path, HttpExchange ex, UmbrellaUser umbrellaUser) {
private boolean postCompanyDirectory(Path path, HttpExchange ex, UmbrellaUser user) throws IOException {
return false;
}
private boolean postProjectDirectory(Path path, HttpExchange ex, UmbrellaUser umbrellaUser) {
private boolean postProjectDirectory(Path path, HttpExchange ex, UmbrellaUser user) throws IOException {
return false;
}
private boolean postUserDirectory(Path path, HttpExchange ex, UmbrellaUser umbrellaUser) {
return false;
private boolean postUserDirectory(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} already exists!",filename);
try {
file.mkdirs();
} catch (Exception e) {
throw unprocessable("Failed to create {0}",filename);
}
Map<String,Object> map = getDirectory(file.getParentFile());
map.put("title",filename);
return sendContent(ex,map);
}
}