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);