From 0a07e2d226a92ac5d4ec32aa4271497a237927b7 Mon Sep 17 00:00:00 2001 From: mp-loki Date: Tue, 13 Nov 2018 16:48:18 +0200 Subject: [PATCH] Added option for case-insensitive username --- application/src/main/resources/thingsboard.yml | 2 ++ .../server/dao/user/UserServiceImpl.java | 13 ++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml index aee49f6e96..c18c2f164f 100644 --- a/application/src/main/resources/thingsboard.yml +++ b/application/src/main/resources/thingsboard.yml @@ -99,6 +99,8 @@ security: tokenSigningKey: "${JWT_TOKEN_SIGNING_KEY:thingsboardDefaultSigningKey}" # Enable/disable access to Tenant Administrators JWT token by System Administrator or Customer Users JWT token by Tenant Administrator user_token_access_enabled: "${SECURITY_USER_TOKEN_ACCESS_ENABLED:true}" + # Enable/disable case-sensitive username login + user_login_case_sensitive: "${SECURITY_USER_LOGIN_CASE_SENSITIVE:true}" # Dashboard parameters dashboard: diff --git a/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java index 8e283b59a2..4ea94408ba 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java @@ -20,6 +20,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.thingsboard.server.common.data.Customer; import org.thingsboard.server.common.data.Tenant; @@ -54,6 +55,9 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic public static final String INCORRECT_USER_ID = "Incorrect userId "; public static final String INCORRECT_TENANT_ID = "Incorrect tenantId "; + @Value("${security.user_login_case_sensitive}") + private boolean userLoginCaseSensitive; + @Autowired private UserDao userDao; @@ -70,7 +74,11 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic public User findUserByEmail(TenantId tenantId, String email) { log.trace("Executing findUserByEmail [{}]", email); validateString(email, "Incorrect email " + email); - return userDao.findByEmail(tenantId, email); + if (userLoginCaseSensitive) { + return userDao.findByEmail(tenantId, email); + } else { + return userDao.findByEmail(tenantId, email.toLowerCase()); + } } @Override @@ -91,6 +99,9 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic public User saveUser(User user) { log.trace("Executing saveUser [{}]", user); userValidator.validate(user, User::getTenantId); + if (user.getId() == null && !userLoginCaseSensitive) { + user.setEmail(user.getEmail().toLowerCase()); + } User savedUser = userDao.save(user.getTenantId(), user); if (user.getId() == null) { UserCredentials userCredentials = new UserCredentials();