diff --git a/build.sh b/build.sh
index 84efdf7b37f26e7a7083bbb402aeced4609a152e..458b5c085e3c6e51fd26278722210b3d2e8b6617 100755
--- a/build.sh
+++ b/build.sh
@@ -26,7 +26,7 @@ else
DOCKER="sudo docker"
fi
-IMAGE="hbpmip/portal-backend"
+IMAGE="thanasulas/portal-backend"
VCS_REF=$(git describe --tags --dirty)
VERSION=$(git describe --tags --dirty)
@@ -38,6 +38,7 @@ docker build --build-arg BUILD_DATE=$(date -Iseconds) \
.
+
BUGSNAG_KEY=""
eval $(grep -e "^\\s*BUGSNAG_KEY" Dockerfile | tr '\\' ' ')
diff --git a/pom.xml b/pom.xml
index fb47d331018bbd301afd6350b5136c2f5f2020e5..20a6f066122779eab771ca0d012dbcc4a8e8a208 100644
--- a/pom.xml
+++ b/pom.xml
@@ -84,7 +84,6 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
-
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
diff --git a/src/main/java/eu/hbp/mip/configuration/SecurityConfiguration.java b/src/main/java/eu/hbp/mip/configuration/SecurityConfiguration.java
index a92879577926739b703e4d015a1a64caa1ed5b87..2d21b61bdc202bf858f3103c78585c481a38c7f2 100644
--- a/src/main/java/eu/hbp/mip/configuration/SecurityConfiguration.java
+++ b/src/main/java/eu/hbp/mip/configuration/SecurityConfiguration.java
@@ -16,14 +16,17 @@ import org.springframework.boot.context.embedded.FilterRegistrationBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.http.*;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.Authentication;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.oauth2.client.OAuth2ClientContext;
import org.springframework.security.oauth2.client.OAuth2RestTemplate;
import org.springframework.security.oauth2.client.filter.OAuth2ClientAuthenticationProcessingFilter;
import org.springframework.security.oauth2.client.filter.OAuth2ClientContextFilter;
-import org.springframework.security.oauth2.client.resource.OAuth2ProtectedResourceDetails;
+import org.springframework.security.oauth2.client.resource.BaseOAuth2ProtectedResourceDetails;
import org.springframework.security.oauth2.client.token.grant.code.AuthorizationCodeResourceDetails;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableOAuth2Client;
import org.springframework.security.web.access.channel.ChannelProcessingFilter;
@@ -34,13 +37,13 @@ import org.springframework.security.web.csrf.CsrfFilter;
import org.springframework.security.web.csrf.CsrfToken;
import org.springframework.security.web.csrf.CsrfTokenRepository;
import org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
import org.springframework.web.filter.OncePerRequestFilter;
import org.springframework.web.util.WebUtils;
-import org.springframework.security.oauth2.client.resource.BaseOAuth2ProtectedResourceDetails;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.AuthorityUtils;
-
+import javax.net.ssl.*;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
@@ -48,33 +51,15 @@ import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
+import java.net.URI;
+import java.security.SecureRandom;
+import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
//newlyadded for logout
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.MediaType;
-import org.springframework.http.RequestEntity;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.client.RestTemplate;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.util.MultiValueMap;
-import java.net.URI;
-
-
-import java.security.SecureRandom;
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
// See https://spring.io/guides/tutorials/spring-boot-oauth2/ for reference about configuring OAuth2 login
diff --git a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
index 476d2f21808ce573b62496602a776b0160a16979..943605b66736f71e47bac8c44989bf88e7b6140c 100644
--- a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
@@ -28,10 +28,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
+import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.*;
import retrofit2.Call;
import retrofit2.Response;
-import org.springframework.security.core.context.SecurityContextHolder;
import java.io.IOException;
import java.util.*;
@@ -82,15 +82,13 @@ public class ExperimentApi {
@RequestMapping(value = "/{uuid}", method = RequestMethod.GET)
public ResponseEntity<String> getExperiment(
@ApiParam(value = "uuid", required = true) @PathVariable("uuid") String uuid) {
-
- UserActionLogging.LogAction("authorities: "+ SecurityContextHolder.getContext().getAuthentication().getAuthorities(),"");
Experiment experiment;
UUID experimentUuid;
try {
experimentUuid = UUID.fromString(uuid);
} catch (IllegalArgumentException iae) {
- UserActionLogging.LogAction("Get Experiment", "Invalid Experiment UUID.");
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Get Experiment", "Invalid Experiment UUID.");
return ResponseEntity.badRequest().body("Invalid Experiment UUID");
}
@@ -100,21 +98,55 @@ public class ExperimentApi {
return new ResponseEntity<>("Not found", HttpStatus.NOT_FOUND);
}
- UserActionLogging.LogAction("Get an experiment ", " uuid : " + uuid);
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Get an experiment ", " uuid : " + uuid);
return new ResponseEntity<>(gsonOnlyExposed.toJson(experiment.jsonify()), HttpStatus.OK);
}
-
-
-
+
+
@ApiOperation(value = "Create an experiment", response = Experiment.class)
@RequestMapping(value = "/runAlgorithm", method = RequestMethod.POST)
- public ResponseEntity<String> runExperiment(@RequestBody ExperimentExecutionDTO experimentExecutionDTO) {
- UserActionLogging.LogAction("Run algorithm", "Running the algorithm...");
+ public ResponseEntity<String> runExperiment(Authentication authentication, @RequestBody ExperimentExecutionDTO experimentExecutionDTO) {
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Run algorithm", "Running the algorithm...");
+
+ // --- Validating proper access rights on the datasets ---
+ String allowedDatasets = authentication.getAuthorities().toString();
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Authorities", allowedDatasets.toString());
+
+ // Getting the dataset from the experiment parameters
+ String experimentDatasets = null;
+ for (AlgorithmExecutionParamDTO parameter : experimentExecutionDTO.getAlgorithms().get(0).getParameters()) {
+ if (parameter.getName().equals("dataset")) {
+ experimentDatasets = parameter.getValue();
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Run algorithm", "Found the dataset parameter!");
+ break;
+ }
+ }
+
+ if (experimentDatasets == null || experimentDatasets.equals("")) {
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Run algorithm",
+ "A dataset should be specified when running an algorithm.");
+ return ResponseEntity.badRequest().body("A dataset should be specified when running an algorithm.");
+ }
+
+ for (String dataset : experimentDatasets.split(",")) {
+ String datasetRole = "role_" + dataset;
+ if (!allowedDatasets.toLowerCase().contains(datasetRole.toLowerCase())) {
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Run algorithm",
+ "You are not allowed to use dataset: " + dataset);
+ return ResponseEntity.status(403).body("You are not allowed to use dataset: " + dataset);
+ }
+ }
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Run algorithm",
+ "User is authorized to use the datasets: " + experimentDatasets);
+
+
+ // --- Run the experiment ---
// Get the type of algorithm
String algorithmType = experimentExecutionDTO.getAlgorithms().get(0).getType();
+ // Run with the appropriate engine
if (algorithmType.equals("workflow")) {
return runGalaxyWorkflow(experimentExecutionDTO);
} else {
@@ -127,7 +159,7 @@ public class ExperimentApi {
public ResponseEntity<String> markExperimentAsViewed(
@ApiParam(value = "uuid", required = true) @PathVariable("uuid") String uuid) {
- UserActionLogging.LogAction("Mark an experiment as viewed", " uuid : " + uuid);
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Mark an experiment as viewed", " uuid : " + uuid);
Experiment experiment;
UUID experimentUuid;
@@ -135,8 +167,7 @@ public class ExperimentApi {
try {
experimentUuid = UUID.fromString(uuid);
} catch (IllegalArgumentException iae) {
- //LOGGER.trace("Invalid UUID", iae);
- //LOGGER.warn("An invalid Experiment UUID was received !");
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Mark an experiment as viewed", "Invalid Experiment UUID" + uuid);
return ResponseEntity.badRequest().body("Invalid Experiment UUID");
}
@@ -146,7 +177,7 @@ public class ExperimentApi {
experiment.setResultsViewed(true);
experimentRepository.save(experiment);
- UserActionLogging.LogAction("Experiment updated (marked as viewed)", " ");
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Experiment updated (marked as viewed)", " ");
return new ResponseEntity<>(gsonOnlyExposed.toJson(experiment.jsonify()), HttpStatus.OK);
}
@@ -156,7 +187,7 @@ public class ExperimentApi {
public ResponseEntity<String> markExperimentAsShared(
@ApiParam(value = "uuid", required = true) @PathVariable("uuid") String uuid) {
- UserActionLogging.LogAction("Mark an experiment as shared", " uuid : " + uuid);
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Mark an experiment as shared", " uuid : " + uuid);
return doMarkExperimentAsShared(uuid, true);
}
@@ -165,7 +196,7 @@ public class ExperimentApi {
@RequestMapping(value = "/{uuid}/markAsUnshared", method = RequestMethod.GET)
public ResponseEntity<String> markExperimentAsUnshared(
@ApiParam(value = "uuid", required = true) @PathVariable("uuid") String uuid) {
- UserActionLogging.LogAction("Mark an experiment as unshared", " uuid : " + uuid);
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Mark an experiment as unshared", " uuid : " + uuid);
return doMarkExperimentAsShared(uuid, false);
}
@@ -175,7 +206,7 @@ public class ExperimentApi {
public ResponseEntity<String> listExperiments(
@ApiParam(value = "maxResultCount") @RequestParam int maxResultCount) {
- UserActionLogging.LogAction("List experiments", " maxResultCount : " + maxResultCount);
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "List experiments", " maxResultCount : " + maxResultCount);
return doListExperiments(false, null);
}
@@ -185,7 +216,7 @@ public class ExperimentApi {
public ResponseEntity<String> listExperiments(@ApiParam(value = "slug") @RequestParam("slug") String modelSlug,
@ApiParam(value = "maxResultCount") @RequestParam("maxResultCount") int maxResultCount) {
- UserActionLogging.LogAction("List experiments", " modelSlug : " + modelSlug);
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "List experiments", " modelSlug : " + modelSlug);
if (maxResultCount <= 0 && (modelSlug == null || "".equals(modelSlug))) {
return new ResponseEntity<>("You must provide at least a slug or a limit of result",
@@ -197,8 +228,8 @@ public class ExperimentApi {
@ApiOperation(value = "list my experiments", response = Experiment.class, responseContainer = "List")
@RequestMapping(method = RequestMethod.GET, params = {"mine"})
- public ResponseEntity<String> listMyExperiments(@ApiParam(value = "mine") @RequestParam("mine") boolean mine) {
- UserActionLogging.LogAction("List my experiments", " mine : " + mine);
+ public ResponseEntity<String> listMyExperiments(Authentication authentication, @ApiParam(value = "mine") @RequestParam("mine") boolean mine) {
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "List my experiments", " mine : " + mine);
return doListExperiments(true, null);
}
@@ -249,14 +280,14 @@ public class ExperimentApi {
experiment.setShared(shared);
experimentRepository.save(experiment);
- UserActionLogging.LogAction("Experiment updated (marked as shared)", "");
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Experiment updated (marked as shared)", "");
return new ResponseEntity<>(gsonOnlyExposed.toJson(experiment.jsonify()), HttpStatus.OK);
}
/* ------------------------------- EXPERIMENT MODEL METHODS ----------------------------------------------------*/
- public Experiment createExperiment(ExperimentExecutionDTO experimentExecutionDTO){
+ public Experiment createExperiment(ExperimentExecutionDTO experimentExecutionDTO) {
User user = userInfo.getUser();
Experiment experiment = new Experiment();
@@ -268,24 +299,24 @@ public class ExperimentApi {
experiment.setName(experimentExecutionDTO.getName());
experimentRepository.save(experiment);
- UserActionLogging.LogAction("Created an experiment", " id : " + experiment.getUuid());
- UserActionLogging.LogAction("Created an experiment", " algorithms : " + experiment.getAlgorithms());
- UserActionLogging.LogAction("Created an experiment", " model : " + experiment.getModel().getSlug());
- UserActionLogging.LogAction("Created an experiment", " name : " + experiment.getName());
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Created an experiment", " id : " + experiment.getUuid());
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Created an experiment", " algorithms : " + experiment.getAlgorithms());
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Created an experiment", " model : " + experiment.getModel().getSlug());
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Created an experiment", " name : " + experiment.getName());
return experiment;
}
private void saveExperiment(Experiment experiment) {
- UserActionLogging.LogAction("Saved an experiment", " id : " + experiment.getUuid());
- UserActionLogging.LogAction("Saved an experiment", " algorithms : " + experiment.getAlgorithms());
- UserActionLogging.LogAction("Saved an experiment", " model : " + experiment.getModel().getSlug());
- UserActionLogging.LogAction("Saved an experiment", " name : " + experiment.getName());
- UserActionLogging.LogAction("Saved an experiment", " historyId : " + experiment.getWorkflowHistoryId());
- UserActionLogging.LogAction("Saved an experiment", " status : " + experiment.getWorkflowStatus());
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Saved an experiment", " id : " + experiment.getUuid());
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Saved an experiment", " algorithms : " + experiment.getAlgorithms());
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Saved an experiment", " model : " + experiment.getModel().getSlug());
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Saved an experiment", " name : " + experiment.getName());
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Saved an experiment", " historyId : " + experiment.getWorkflowHistoryId());
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Saved an experiment", " status : " + experiment.getWorkflowStatus());
experimentRepository.save(experiment);
- UserActionLogging.LogAction("Experiment saved", "");
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Experiment saved", "");
}
private void finishExperiment(Experiment experiment) {
@@ -304,7 +335,7 @@ public class ExperimentApi {
* @return the response to be returned
*/
public ResponseEntity<String> runExaremeAlgorithm(ExperimentExecutionDTO experimentExecutionDTO) {
- UserActionLogging.LogAction("Run exareme algorithm", "Running the algorithm...");
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Run exareme algorithm", "Running the algorithm...");
Experiment experiment = createExperiment(experimentExecutionDTO);
@@ -317,13 +348,13 @@ public class ExperimentApi {
String body = gson.toJson(algorithmParameters);
String url = queryExaremeUrl + "/" + algorithmName;
- UserActionLogging.LogAction("Run exareme algorithm", "url: " + url + ", body: " + body);
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Run exareme algorithm", "url: " + url + ", body: " + body);
ResponseEntity<String> response = new ResponseEntity<>(gsonOnlyExposed.toJson(experiment.jsonify()), HttpStatus.OK);
- UserActionLogging.LogAction("Run exareme algorithm",
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Run exareme algorithm",
"Completed, returning: " + experiment.toString());
- UserActionLogging.LogAction("Run exareme algorithm",
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Run exareme algorithm",
"Starting exareme execution thread");
new Thread(() -> {
// ATTENTION: Inside the Thread only LogThreadAction should be used, not LogAction!
@@ -372,7 +403,7 @@ public class ExperimentApi {
* @return the response to be returned
*/
public ResponseEntity<String> runGalaxyWorkflow(ExperimentExecutionDTO experimentExecutionDTO) {
- UserActionLogging.LogAction("Run workflow", "Running a workflow...");
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Run workflow", "Running a workflow...");
Experiment experiment = createExperiment(experimentExecutionDTO);
@@ -402,7 +433,7 @@ public class ExperimentApi {
}
}
if (workflow == null) {
- UserActionLogging.LogAction("Run workflow",
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Run workflow",
"Could not find algorithm code: " + workflowId);
return ResponseEntity.status(HttpStatus.BAD_REQUEST)
.body(new ErrorResponse("Could not find galaxy algorithm.").toString());
@@ -421,7 +452,7 @@ public class ExperimentApi {
// Create the request client
RetroFitGalaxyClients service = RetrofitClientInstance.getRetrofitInstance().create(RetroFitGalaxyClients.class);
- UserActionLogging.LogAction("Run workflow", "Running Galaxy workflow with id: " + workflow.getId());
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Run workflow", "Running Galaxy workflow with id: " + workflow.getId());
// Call Galaxy to run the workflow
Call<PostWorkflowToGalaxyDtoResponse> call = service.postWorkflowToGalaxy(workflow.getId(), galaxyApiKey, requestBodyJson);
@@ -430,7 +461,7 @@ public class ExperimentApi {
if (response.code() == 200) { // Call succeeded
String responseBody = gson.toJson(response.body());
- UserActionLogging.LogAction("Run workflow", "Response: " + responseBody);
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Run workflow", "Response: " + responseBody);
String historyId = (String) new JSONObject(responseBody).get("history_id");
experiment.setWorkflowHistoryId(historyId);
@@ -440,7 +471,7 @@ public class ExperimentApi {
} else { // Something unexpected happened
String msgErr = gson.toJson(response.errorBody());
- UserActionLogging.LogAction("Run workflow", "Error Response: " + msgErr);
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Run workflow", "Error Response: " + msgErr);
// Values are read from streams.
JSONObject jObjectError = new JSONObject(msgErr);
@@ -452,7 +483,7 @@ public class ExperimentApi {
}
} catch (Exception e) {
- UserActionLogging.LogAction("Run workflow", "An exception occurred: " + e.getMessage());
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Run workflow", "An exception occurred: " + e.getMessage());
experiment.setHasError(true);
experiment.setHasServerError(true);
experiment.setResult(e.getMessage());
@@ -462,37 +493,37 @@ public class ExperimentApi {
// Start the process of fetching the status
updateWorkflowExperiment(experiment);
- UserActionLogging.LogAction("Run workflow", "Run workflow completed!");
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Run workflow", "Run workflow completed!");
return new ResponseEntity(gsonOnlyExposed.toJson(experiment.jsonify()), HttpStatus.OK);
}
/**
- * This method creates a thread that will fetch the workflow result when it is ready
+ * This method creates a thread that will fetch the workflow result when it is ready
*
- * @param experiment will be used to fetch it's workflow status, it should have the workflowHistoryId initialized
- * and the result should not already be fetched
- * @return nothing, just updates the experiment
+ * @param experiment will be used to fetch it's workflow status, it should have the workflowHistoryId initialized
+ * and the result should not already be fetched
+ * @return nothing, just updates the experiment
*/
public void updateWorkflowExperiment(Experiment experiment) {
if (experiment == null) {
- UserActionLogging.LogAction("Update workflow experiment", "The experiment does not exist.");
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Update workflow experiment", "The experiment does not exist.");
return;
}
- UserActionLogging.LogAction("Update workflow experiment",
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Update workflow experiment",
" Experiment id : " + experiment.getUuid());
if (experiment.getWorkflowHistoryId() == null) {
- UserActionLogging.LogAction("Update workflow experiment", "History Id does not exist.");
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Update workflow experiment", "History Id does not exist.");
return;
}
- UserActionLogging.LogAction("Update workflow experiment", "Starting Thread..." );
+ UserActionLogging.LogUserAction(userInfo.getUser().getUsername(), "Update workflow experiment", "Starting Thread...");
new Thread(() -> {
- while(true) {
+ while (true) {
// ATTENTION: Inside the Thread only LogThreadAction should be used, not LogAction!
UserActionLogging.LogThreadAction("Update workflow experiment", "Thread is running...");
diff --git a/src/main/java/eu/hbp/mip/utils/UserActionLogging.java b/src/main/java/eu/hbp/mip/utils/UserActionLogging.java
index b4a96fc864a16063c39dede8ea0233fbfd41b981..c4d7305b9a5924af29a41c9c4836004f21292f17 100644
--- a/src/main/java/eu/hbp/mip/utils/UserActionLogging.java
+++ b/src/main/java/eu/hbp/mip/utils/UserActionLogging.java
@@ -1,25 +1,32 @@
package eu.hbp.mip.utils;
+import eu.hbp.mip.model.UserInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
public class UserActionLogging {
-
private static final Logger LOGGER = LoggerFactory.getLogger(UserActionLogging.class);
public static void LogAction(String actionName, String actionIdInfo)
+ {
+ LOGGER.info( "Called endpoint: " + actionName
+ + " info: " + actionIdInfo);
+ }
+
+ public static void LogUserAction(String userName, String actionName, String actionInfo)
{
LOGGER.info( " User : "
- + SecurityContextHolder.getContext().getAuthentication().getName()
+ + userName
+ " called endpoint: " + actionName
- + " info: " + actionIdInfo);
+ + " info: " + actionInfo);
}
// Used from Threads because LogAction won't work.
public static void LogThreadAction(String actionName, String actionIdInfo)
{
LOGGER.info( "Thread -->" + actionName + " info: " + actionIdInfo);
- }
+ }
}