diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js
index 7c5ee7d128a8a179f7cffd3573276fd889f81241..5f7b42280d78116bd45e970e97346a0b107f1855 100644
--- a/frontend-js/src/main/js/ServerConnector.js
+++ b/frontend-js/src/main/js/ServerConnector.js
@@ -489,7 +489,7 @@ ServerConnector.getReferenceGenomeUrl = function (queryParams, filterParams) {
 
     return this.getApiUrl({
       type: "genomics/taxonomies/" + queryParams.organism + "/genomeTypes/" + queryParams.type + "/versions/" + version
-      + "/",
+        + "/",
       params: filterParams
     });
   }
@@ -539,7 +539,7 @@ ServerConnector.getReferenceGenomeGeneMappingsUrl = function (queryParams, filte
 ServerConnector.getAvailableGenomeUrlsUrl = function (queryParams, filterParams) {
   return this.getApiUrl({
     type: "genomics/taxonomies/" + queryParams.organism.getResource() + "/genomeTypes/" + queryParams.type + "/versions/" + queryParams.version
-    + ":getAvailableRemoteUrls",
+      + ":getAvailableRemoteUrls",
     params: filterParams
   });
 };
@@ -1737,7 +1737,12 @@ ServerConnector.login = function (login, password) {
   } else {
     params.login = "anonymous";
   }
-  return self.sendPostRequest(self.loginUrl(), params).then(function () {
+  return self.sendPostRequest(self.loginUrl(), params).then(function (content) {
+    var data = JSON.parse(content);
+    if (data["login"] !== undefined) {
+      params.login = data["login"];
+    }
+    console.log(params.login);
     self.getSessionData().setLogin(params.login);
     return Promise.resolve(self.getSessionData().getToken());
   }, function (error) {
diff --git a/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js b/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js
index fb233eaa895767f827f3f7b296d9e953eebe2653..e92116131049296293a4d0dde2b155777efbb45f 100644
--- a/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js
@@ -167,7 +167,7 @@ UsersAdminPanel.prototype._createUsersTableRow = function () {
       var isConnected = user.isConnectedToLdap();
       if (isConnected !== newIsConnected) {
         user.setConnectedToLdap(newIsConnected);
-        return self.getServerConnector().updateUser(user);
+        return Promise.all([user.callListeners("onreload"), self.getServerConnector().updateUser(user)]);
       }
     }).catch(function (error) {
       GuiConnector.alert(error);
diff --git a/frontend-js/src/main/js/map/data/User.js b/frontend-js/src/main/js/map/data/User.js
index 38df58677378362b0ddc77c906b391216ba2b9b9..37496daa81f89c980e634036fa0724a67324baa1 100644
--- a/frontend-js/src/main/js/map/data/User.js
+++ b/frontend-js/src/main/js/map/data/User.js
@@ -351,6 +351,10 @@ User.prototype.update = function (user) {
   self.setMinColor(user.getMinColor());
   self.setMaxColor(user.getMaxColor());
   self.setSimpleColor(user.getSimpleColor());
+  self.setNeutralColor(user.getNeutralColor());
+  self.setTermsOfUseConsent(user.isTermsOfUseConsent());
+  self.setLdapAccountAvailable(user.isLdapAccountAvailable());
+  self.setConnectedToLdap(user.isConnectedToLdap());
 
   return self.callListeners("onreload");
 };
@@ -376,7 +380,9 @@ User.prototype.isTermsOfUseConsent = function () {
  * @param {boolean} ldapAccountAvailable
  */
 User.prototype.setLdapAccountAvailable = function (ldapAccountAvailable) {
-  this._ldapAccountAvailable = ldapAccountAvailable;
+  if (ldapAccountAvailable !== undefined) {
+    this._ldapAccountAvailable = ldapAccountAvailable;
+  }
 };
 
 /**
@@ -392,7 +398,9 @@ User.prototype.isLdapAccountAvailable = function () {
  * @param {boolean} connectedToLdap
  */
 User.prototype.setConnectedToLdap = function (connectedToLdap) {
-  this._connectedToLdap = connectedToLdap;
+  if (connectedToLdap !== undefined) {
+    this._connectedToLdap = connectedToLdap;
+  }
 };
 
 /**
diff --git a/frontend-js/src/test/js/map/data/User-test.js b/frontend-js/src/test/js/map/data/User-test.js
index 6b432464293cb1aeaa5d02dde6326da8585ad5f3..b2870a33acf10c6b68180216fab623b914762203 100644
--- a/frontend-js/src/test/js/map/data/User-test.js
+++ b/frontend-js/src/test/js/map/data/User-test.js
@@ -10,7 +10,7 @@ var logger = require('../../logger');
 var chai = require('chai');
 var assert = chai.assert;
 
-describe('Project', function () {
+describe('User', function () {
   describe("constructor", function () {
     it("empty data", function () {
       var user = new User({});
@@ -20,6 +20,17 @@ describe('Project', function () {
     });
   });
 
+  describe("update", function () {
+    it("ldap account available", function () {
+      var user = new User({});
+      assert.ok(user);
+      var user2 = new User({ldapAccountAvailable:true});
+      user.update(user2);
+      assert.ok(user.isLdapAccountAvailable());
+    });
+  });
+
+
   describe("setPrivilege", function () {
     it("non existing data", function () {
       var user = new User({});
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserController.java b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserController.java
index 785399a5e791f3939856763471a526508d04764f..fa33e73725f04b746c10c060b4efaae109b0a5d9 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserController.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserController.java
@@ -89,6 +89,7 @@ public class UserController extends BaseController {
         }
       }
       result.put("info", "Login successful. TOKEN returned as a cookie");
+      result.put("login", user.getLogin());
       return result;
     } catch (AuthenticationException e) {
       throw new SecurityException("Invalid credentials");
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java
index 3ee62cd1c649594650180a0c3b38d91637b90cbb..25319a2d49e3ad5edeae65eb96237d86f3eecba8 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java
@@ -66,7 +66,7 @@ public class UserRestImpl extends BaseRestImpl {
       Boolean ldapAvailable = false;
       if (columnSet.contains("ldapAccountAvailable")) {
         List<User> userList = new ArrayList<>();
-        userList.add(ownUserData);
+        userList.add(user);
         ldapAvailable = getUserService().ldapAccountExistsForLogin(userList).get(login);
       }
       return prepareUse(user, columnSet, isAdmin, ldapAvailable);
diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java b/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java
index 633bee5d8cf09e1cb9bdd4f81b4666a03ef171aa..3e45c9a29b950e75d0ff2287f0331a17e9f393ad 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java
@@ -500,7 +500,7 @@ public class UserService implements IUserService {
       user = getUserByLogin(Configuration.ANONYMOUS_LOGIN);
     }
     if (user != null) {
-      sessionRegistry.registerNewSession(token, new org.springframework.security.core.userdetails.User(login,
+      sessionRegistry.registerNewSession(token, new org.springframework.security.core.userdetails.User(user.getLogin(),
           passwordEncoder.encode(password), AuthorityUtils.commaSeparatedStringToAuthorityList("")));
       return token;
     } else {
@@ -524,6 +524,7 @@ public class UserService implements IUserService {
     if (login == null || password == null) {
       return null;
     }
+    login = login.toLowerCase();
     if (!ldapService.isValidConfiguration()) {
       return null;
     }
@@ -532,17 +533,20 @@ public class UserService implements IUserService {
       boolean authenticatedOverLdap = ldapService.login(login, password);
       if (authenticatedOverLdap) {
         UserDTO ldapUserData = ldapService.getUserByLogin(login);
-        user = new User();
-        user.setLogin(login);
-        user.setCryptedPassword(passwordEncoder.encode(password));
-        user.setName(ldapUserData.getFirstName());
-        user.setSurname(ldapUserData.getLastName());
-        user.setEmail(ldapUserData.getEmail());
-        user.setConnectedToLdap(true);
-        addUser(user);
-        createDefaultBasicPrivilegesForUser(user);
-        for (Project project : projectDao.getAll()) {
-          createDefaultProjectPrivilegesForUser(project, user);
+        user = userDao.getUserByLogin(login);
+        if (user == null) {
+          user = new User();
+          user.setLogin(login);
+          user.setCryptedPassword(passwordEncoder.encode(password));
+          user.setName(ldapUserData.getFirstName());
+          user.setSurname(ldapUserData.getLastName());
+          user.setEmail(ldapUserData.getEmail());
+          user.setConnectedToLdap(true);
+          addUser(user);
+          createDefaultBasicPrivilegesForUser(user);
+          for (Project project : projectDao.getAll()) {
+            createDefaultProjectPrivilegesForUser(project, user);
+          }
         }
       }
       return user;
@@ -612,8 +616,9 @@ public class UserService implements IUserService {
       try {
         List<String> ldapUserNames = getLdapService().getUsernames();
         for (String string : ldapUserNames) {
-          if (result.keySet().contains(string)) {
-            result.put(string, true);
+          String ldapLogin = string.toLowerCase();
+          if (result.keySet().contains(ldapLogin)) {
+            result.put(ldapLogin, true);
           }
         }
       } catch (LDAPException e) {