From 511c4f3979acccbb6ddfa0f40604e73bd8589e30 Mon Sep 17 00:00:00 2001
From: ThanKarab <tkarabatsis@hotmail.com>
Date: Wed, 18 Nov 2020 01:55:25 -0800
Subject: [PATCH] User updated if info changed and csrf disabled on
 development.

---
 docker/README.md                                   |  3 ++-
 .../mip/configurations/SecurityConfiguration.java  |  7 ++++++-
 .../eu/hbp/mip/services/ActiveUserService.java     | 14 +++++---------
 3 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/docker/README.md b/docker/README.md
index da8299413..361c5ae56 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -74,4 +74,5 @@ To use this image, you need a running instance of PostgreSQL and to configure th
 * DATA_CENTER_LOCATION: Location of the datacenter, used when reporting errors to Bugsnag
 
 
-# TODO Refactor variables
\ No newline at end of file
+# TODO Refactor variables
+# TODO Refactor variables on mip-deployent as well
\ No newline at end of file
diff --git a/src/main/java/eu/hbp/mip/configurations/SecurityConfiguration.java b/src/main/java/eu/hbp/mip/configurations/SecurityConfiguration.java
index dfc5d4e47..21a494b88 100644
--- a/src/main/java/eu/hbp/mip/configurations/SecurityConfiguration.java
+++ b/src/main/java/eu/hbp/mip/configurations/SecurityConfiguration.java
@@ -25,7 +25,7 @@ import javax.servlet.http.HttpServletRequest;
 @KeycloakConfiguration
 public class SecurityConfiguration extends KeycloakWebSecurityConfigurerAdapter {
 
-    // Redirect to login page url
+    // Upon logout, redirect to login page url
     private static final String logoutRedirectURL = "/sso/login";
 
     @Value("#{'${authentication.enabled}'}")
@@ -36,6 +36,11 @@ public class SecurityConfiguration extends KeycloakWebSecurityConfigurerAdapter
         super.configure(http);
 
         if (authenticationEnabled) {
+
+            // Used for development with authentication turned on.
+            // Should not be enabled on production.
+            http.csrf().disable();
+
             http.authorizeRequests()
                     .antMatchers(
                             "/sso/login",
diff --git a/src/main/java/eu/hbp/mip/services/ActiveUserService.java b/src/main/java/eu/hbp/mip/services/ActiveUserService.java
index 5004e1f7f..61bad973c 100644
--- a/src/main/java/eu/hbp/mip/services/ActiveUserService.java
+++ b/src/main/java/eu/hbp/mip/services/ActiveUserService.java
@@ -46,19 +46,15 @@ public class ActiveUserService {
             return user;
         }
 
-
-        // TODO Update user if new values are providedTO
         // If authentication is ON get user info from Token
         KeycloakPrincipal keycloakPrincipal =
                 (KeycloakPrincipal) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
         IDToken idToken = keycloakPrincipal.getKeycloakSecurityContext().getIdToken();
-        UserDAO userInDatabase = userRepository.findByUsername(idToken.getPreferredUsername());
-        if (userInDatabase != null) {
-            user = userInDatabase;
-        } else {
-            UserDAO newUser = new UserDAO(idToken.getPreferredUsername(), idToken.getName(), idToken.getEmail());
-            userRepository.save(newUser);
-            user = newUser;
+        user = new UserDAO(idToken.getPreferredUsername(), idToken.getName(), idToken.getEmail());
+
+        UserDAO userInDatabase = userRepository.findByUsername(user.getUsername());
+        if (userInDatabase == null || !userInDatabase.equals(user)) {
+            userRepository.save(user);
         }
         return user;
     }
-- 
GitLab