From 2e4e6d41645613c8d78ef1bc3d473abd5d46eb72 Mon Sep 17 00:00:00 2001 From: anhefti Date: Mon, 9 Sep 2019 10:20:04 +0200 Subject: [PATCH] fixed connection authenticated status warning --- .../impl/SebClientConnectionServiceImpl.java | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/session/impl/SebClientConnectionServiceImpl.java b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/session/impl/SebClientConnectionServiceImpl.java index a1a5f66c..80997cd6 100644 --- a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/session/impl/SebClientConnectionServiceImpl.java +++ b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/session/impl/SebClientConnectionServiceImpl.java @@ -11,6 +11,7 @@ package ch.ethz.seb.sebserver.webservice.servicelayer.session.impl; import java.security.Principal; import java.util.UUID; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Lazy; @@ -239,10 +240,36 @@ public class SebClientConnectionServiceImpl implements SebClientConnectionServic userSessionId); } - final ClientConnection clientConnection = getClientConnection(connectionToken); + ClientConnection clientConnection = getClientConnection(connectionToken); checkInstitutionalIntegrity(institutionId, clientConnection); checkExamIntegrity(examId, clientConnection); + if (StringUtils.isNoneBlank(userSessionId)) { + if (StringUtils.isNoneBlank(clientConnection.userSessionId)) { + log.error( + "ClientConnection integrity violation: clientConnection has already a userSessionId: {} : {}", + userSessionId, clientConnection); + throw new IllegalArgumentException( + "ClientConnection integrity violation: clientConnection has already a userSessionId"); + } + + // create new ClientConnection for update + final ClientConnection authenticatedClientConnection = new ClientConnection( + clientConnection.id, + null, + null, + ConnectionStatus.AUTHENTICATED, + null, + userSessionId, + null, + null, + null); + + clientConnection = this.clientConnectionDAO + .save(authenticatedClientConnection) + .getOrThrow(); + } + // connection integrity check if (clientConnection.status == ConnectionStatus.CONNECTION_REQUESTED) { // TODO discuss if we need a flag on exam domain level that indicates whether unauthenticated connection