diff --git a/core/src/main/java/de/srsoftware/umbrella/core/constants/Path.java b/core/src/main/java/de/srsoftware/umbrella/core/constants/Path.java index 6e7e3eb6..dc00e11f 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/constants/Path.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/constants/Path.java @@ -13,6 +13,8 @@ public class Path { public static final String COMPANY = "company"; public static final String CONNECTED = "connected"; + public static final String EVALUATE = "evaluate"; + public static final String ITEM = "item"; public static final String JSON = "json"; diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte index ec6e416d..d7ab0546 100644 --- a/frontend/src/App.svelte +++ b/frontend/src/App.svelte @@ -17,6 +17,7 @@ import EditPoll from "./routes/poll/Edit.svelte"; import EditService from "./routes/user/EditService.svelte"; import EditUser from "./routes/user/EditUser.svelte"; + import EvalPoll from "./routes/poll/Evaluate.svelte"; import FileIndex from "./routes/files/Index.svelte"; import Footer from "./Components/Footer.svelte"; import Kanban from "./routes/project/Kanban.svelte"; @@ -99,6 +100,7 @@ + diff --git a/frontend/src/routes/poll/Evaluate.svelte b/frontend/src/routes/poll/Evaluate.svelte new file mode 100644 index 00000000..9b3a20a0 --- /dev/null +++ b/frontend/src/routes/poll/Evaluate.svelte @@ -0,0 +1,19 @@ + + +Evaluate \ No newline at end of file diff --git a/poll/src/main/java/de/srsoftware/umbrella/poll/PollModule.java b/poll/src/main/java/de/srsoftware/umbrella/poll/PollModule.java index b0f68754..9d4c2c56 100644 --- a/poll/src/main/java/de/srsoftware/umbrella/poll/PollModule.java +++ b/poll/src/main/java/de/srsoftware/umbrella/poll/PollModule.java @@ -8,7 +8,6 @@ import static de.srsoftware.umbrella.core.constants.Field.ID; import static de.srsoftware.umbrella.core.constants.Path.*; import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*; import static de.srsoftware.umbrella.poll.Constants.CONFIG_DATABASE; -import static java.lang.System.Logger.Level.WARNING; import com.sun.net.httpserver.HttpExchange; import de.srsoftware.configuration.Configuration; @@ -50,9 +49,10 @@ public class PollModule extends BaseHandler implements PollService { if (user.isEmpty()) return unauthorized(ex); var head = path.pop(); return switch (head) { - case LIST -> getPollList(ex,user.get()); - case null -> super.doGet(path,ex); - default -> getPoll(ex,user.get(),head); + case EVALUATE -> getPollEvaluation(ex,user.get(), path); + case LIST -> getPollList(ex,user.get()); + case null -> super.doGet(path,ex); + default -> getPoll(ex,user.get(),head); }; } catch (UmbrellaException e){ return send(ex,e); @@ -94,9 +94,14 @@ public class PollModule extends BaseHandler implements PollService { } private boolean getPoll(HttpExchange ex, UmbrellaUser user, String id) throws IOException { - var poll = pollDb.loadPoll(id); - // TODO: check permissions - LOG.log(WARNING,"no permission checks on PollModule.getPoll({0})",id); + return sendContent(ex,loadPoll(user,id)); + } + + private boolean getPollEvaluation(HttpExchange ex, UmbrellaUser user, Path path) throws IOException { + if (path.empty()) throw missingField(ID); + var poll = loadPoll(user,path.pop()); + + // TODO: load data required for evaluation return sendContent(ex,poll); } @@ -105,13 +110,18 @@ public class PollModule extends BaseHandler implements PollService { return sendContent(ex,list); } - private boolean patchPoll(HttpExchange ex, UmbrellaUser user, String id, Path path) throws IOException { - var poll = pollDb.loadPoll(id); + private Poll loadPoll(UmbrellaUser user, String pollId) { + var poll = pollDb.loadPoll(pollId); var permitted = user.equals(poll.owner()); if (!permitted) { var permission = poll.shares().get(user); if (permission == null || permission < 2) throw forbidden(Text.NOT_ALLOWED_TO_EDIT, Field.OBJECT,Text.POLL); } + return poll; + } + + private boolean patchPoll(HttpExchange ex, UmbrellaUser user, String id, Path path) throws IOException { + var poll = loadPoll(user,id); var head = path.pop(); return switch (head){ case null -> patchPoll(ex, poll);