From ffca8e5e2984de48539d9315e56523cfe1f63838 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Wed, 8 Apr 2026 17:45:36 +0200 Subject: [PATCH] Add: UserLoggedinCheck to validate that Session has User associated with it --- .../server/app/checks/UserLoggedinCheck.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/checks/UserLoggedinCheck.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/checks/UserLoggedinCheck.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/checks/UserLoggedinCheck.java new file mode 100644 index 0000000..fed3d0a --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/checks/UserLoggedinCheck.java @@ -0,0 +1,30 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.app.checks; + +import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User; +import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry; +import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.checks.HandlerCheck; +import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.request.Request; +import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse; +import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.Response; +import java.util.Optional; + +public class UserLoggedinCheck implements HandlerCheck { + private final UserRegistry userRegistry; + + public UserLoggedinCheck(UserRegistry userRegistry) { + this.userRegistry = userRegistry; + } + + @Override + public Optional check(Request request) { + Optional user = userRegistry.getBySessionId(request.getSessionId()); + if (user.isPresent()) { + return Optional.empty(); + } + return Optional.of( + new ErrorResponse( + request.getContext(), + "USER_NOT_LOGGED_IN", + "The execution of this command requires the user to be logged in")); + } +}