diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/login/LoginHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/login/LoginHandler.java new file mode 100644 index 0000000..b28ba3a --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/login/LoginHandler.java @@ -0,0 +1,24 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.app.commands.login; + +import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User; +import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserFactory; +import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry; +import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler; +import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.dispatcher.ResponseDispatcher; + +public class LoginHandler implements CommandHandler { + private final ResponseDispatcher responseDispatcher; + private final UserFactory userFactory; + + public LoginHandler(ResponseDispatcher responseDispatcher, UserRegistry userRegistry) { + this.responseDispatcher = responseDispatcher; + this.userFactory = new UserFactory(userRegistry); + } + + @Override + public void execute(LoginRequest request) { + User user = userFactory.create(request.getUsername(), request.getContext().sessionId()); + responseDispatcher.dispatch( + new LoginResponse(request.getContext(), user.getName(), user.getId())); + } +}