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) {