From 60d116664b27d803985bac2505d982c23e41e0cc Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Fri, 19 Sep 2025 20:45:54 +0200 Subject: [PATCH] implemented page view for freely available wiki pages Signed-off-by: Stephan Richter --- frontend/src/App.svelte | 3 +- frontend/src/routes/wiki/GuestView.svelte | 51 +++++++++++++++++++ .../srsoftware/umbrella/wiki/WikiModule.java | 12 +++-- 3 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 frontend/src/routes/wiki/GuestView.svelte diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte index e7ac232..3406257 100644 --- a/frontend/src/App.svelte +++ b/frontend/src/App.svelte @@ -35,6 +35,7 @@ import ViewTask from "./routes/task/View.svelte"; import WikiIndex from "./routes/wiki/Index.svelte"; import WikiPage from "./routes/wiki/View.svelte" + import WikiGuest from "./routes/wiki/GuestView.svelte" let translations_ready = $state(false); @@ -102,7 +103,7 @@ - + diff --git a/frontend/src/routes/wiki/GuestView.svelte b/frontend/src/routes/wiki/GuestView.svelte new file mode 100644 index 0000000..cc9dc6d --- /dev/null +++ b/frontend/src/routes/wiki/GuestView.svelte @@ -0,0 +1,51 @@ + +{#if error} +{error} +{/if} +{#if page} +
+

{page.title}

+
+ {@html page.content.rendered} +
+
+{/if} diff --git a/wiki/src/main/java/de/srsoftware/umbrella/wiki/WikiModule.java b/wiki/src/main/java/de/srsoftware/umbrella/wiki/WikiModule.java index 4ab0f8c..c3f8c3f 100644 --- a/wiki/src/main/java/de/srsoftware/umbrella/wiki/WikiModule.java +++ b/wiki/src/main/java/de/srsoftware/umbrella/wiki/WikiModule.java @@ -70,11 +70,16 @@ public class WikiModule extends BaseHandler implements WikiService { try { Optional token = SessionToken.from(ex).map(Token::of); var user = userService().loadUser(token); - if (user.isEmpty()) return unauthorized(ex); var head = path.pop(); + if (user.isEmpty()) { + return switch (head){ + case PAGE -> getPage(path, null, ex); + case null, default -> unauthorized(ex); + }; + } return switch (head) { case null -> getUserPages(user.get(),ex); - case AVAILABLE -> getAvailability(path,ex); + case AVAILABLE -> getAvailability(path,ex); case PAGE -> getPage(path, user.get(), ex); default -> super.doGet(path,ex); }; @@ -143,7 +148,8 @@ public class WikiModule extends BaseHandler implements WikiService { } } var page = loadPage(id,version); - var permission = page.members().get(user.id()); + var userId = user == null ? 0 : user.id(); + var permission = page.members().get(userId); if (permission == null) throw forbidden("You are not allowed to access \"{0}\"!",id); return sendContent(ex, page); }