Browse Source

implemented delivery of prrojecct files

module/files
Stephan Richter 1 month ago
parent
commit
d18dfe1f84
  1. 1
      core/src/main/java/de/srsoftware/umbrella/core/api/FileService.java
  2. 1
      files/src/main/java/de/srsoftware/umbrella/files/Constants.java
  3. 1
      files/src/main/java/de/srsoftware/umbrella/files/FileDb.java
  4. 25
      files/src/main/java/de/srsoftware/umbrella/files/FileModule.java
  5. 14
      files/src/main/java/de/srsoftware/umbrella/files/SqliteDb.java
  6. 1
      legacy/src/main/java/de/srsoftware/umbrella/legacy/CompanyLegacy.java
  7. 1
      time/src/main/java/de/srsoftware/umbrella/time/TimeModule.java

1
core/src/main/java/de/srsoftware/umbrella/core/api/FileService.java

@ -1,3 +1,4 @@ @@ -1,3 +1,4 @@
/* © SRSoftware 2025 */
package de.srsoftware.umbrella.core.api;
public interface FileService {

1
files/src/main/java/de/srsoftware/umbrella/files/Constants.java

@ -1,3 +1,4 @@ @@ -1,3 +1,4 @@
/* © SRSoftware 2025 */
package de.srsoftware.umbrella.files;
public class Constants {

1
files/src/main/java/de/srsoftware/umbrella/files/FileDb.java

@ -1,3 +1,4 @@ @@ -1,3 +1,4 @@
/* © SRSoftware 2025 */
package de.srsoftware.umbrella.files;
import de.srsoftware.umbrella.core.model.UmbrellaUser;

25
files/src/main/java/de/srsoftware/umbrella/files/FileModule.java

@ -1,5 +1,16 @@ @@ -1,5 +1,16 @@
/* © SRSoftware 2025 */
package de.srsoftware.umbrella.files;
import static de.srsoftware.umbrella.core.ConnectionProvider.connect;
import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.ModuleRegistry.projectService;
import static de.srsoftware.umbrella.core.ModuleRegistry.userService;
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*;
import static de.srsoftware.umbrella.files.Constants.CONFIG_DATABASE;
import static de.srsoftware.umbrella.files.Constants.CONFIG_FILESTORE;
import static java.net.HttpURLConnection.HTTP_OK;
import static java.nio.charset.StandardCharsets.UTF_8;
import com.sun.net.httpserver.HttpExchange;
import de.srsoftware.configuration.Configuration;
import de.srsoftware.tools.Path;
@ -11,26 +22,16 @@ import de.srsoftware.umbrella.core.exceptions.UmbrellaException; @@ -11,26 +22,16 @@ import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
import de.srsoftware.umbrella.core.model.Project;
import de.srsoftware.umbrella.core.model.Token;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URLDecoder;
import java.nio.file.Files;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import static de.srsoftware.umbrella.core.ConnectionProvider.connect;
import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.ModuleRegistry.projectService;
import static de.srsoftware.umbrella.core.ModuleRegistry.userService;
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*;
import static de.srsoftware.umbrella.files.Constants.CONFIG_DATABASE;
import static de.srsoftware.umbrella.files.Constants.CONFIG_FILESTORE;
import static java.net.HttpURLConnection.HTTP_OK;
public class FileModule extends BaseHandler implements FileService {
private final File baseDir;
@ -91,7 +92,7 @@ public class FileModule extends BaseHandler implements FileService { @@ -91,7 +92,7 @@ public class FileModule extends BaseHandler implements FileService {
}
var project = projects.loadMembers(projects.load(pid));
var filename = "/project/"+pid;
if (!path.empty()) filename += "/"+path;
if (!path.empty()) filename += "/"+URLDecoder.decode(path.toString(),UTF_8);
if (!project.hasMember(user) && !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);

14
files/src/main/java/de/srsoftware/umbrella/files/SqliteDb.java

@ -1,13 +1,6 @@ @@ -1,13 +1,6 @@
/* © SRSoftware 2025 */
package de.srsoftware.umbrella.files;
import de.srsoftware.tools.jdbc.Condition;
import de.srsoftware.tools.jdbc.Query;
import de.srsoftware.umbrella.core.BaseDb;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
import java.sql.Connection;
import java.sql.SQLException;
import static de.srsoftware.tools.jdbc.Condition.equal;
import static de.srsoftware.tools.jdbc.Query.SelectQuery.ALL;
import static de.srsoftware.tools.jdbc.Query.select;
@ -17,6 +10,11 @@ import static de.srsoftware.umbrella.files.Constants.FILE; @@ -17,6 +10,11 @@ import static de.srsoftware.umbrella.files.Constants.FILE;
import static de.srsoftware.umbrella.files.Constants.TABLE_FILE_SHARES;
import static java.text.MessageFormat.format;
import de.srsoftware.umbrella.core.BaseDb;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
import java.sql.Connection;
import java.sql.SQLException;
public class SqliteDb extends BaseDb implements FileDb {
public SqliteDb(Connection conn) {

1
legacy/src/main/java/de/srsoftware/umbrella/legacy/CompanyLegacy.java

@ -14,7 +14,6 @@ import de.srsoftware.configuration.Configuration; @@ -14,7 +14,6 @@ import de.srsoftware.configuration.Configuration;
import de.srsoftware.tools.Path;
import de.srsoftware.tools.SessionToken;
import de.srsoftware.umbrella.core.BaseHandler;
import de.srsoftware.umbrella.core.ModuleRegistry;
import de.srsoftware.umbrella.core.model.Token;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
import java.io.IOException;

1
time/src/main/java/de/srsoftware/umbrella/time/TimeModule.java

@ -10,7 +10,6 @@ import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*; @@ -10,7 +10,6 @@ import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*;
import static de.srsoftware.umbrella.core.model.Time.State.Open;
import static de.srsoftware.umbrella.core.model.Time.State.Started;
import static de.srsoftware.umbrella.time.Constants.*;
import static java.util.stream.Collectors.toSet;
import com.sun.net.httpserver.HttpExchange;
import de.srsoftware.configuration.Configuration;

Loading…
Cancel
Save