Browse Source

refactored UserService to reuse functionality

pull/11955/head
dashevchenko 2 years ago
parent
commit
9ba71056ce
  1. 10
      application/src/main/java/org/thingsboard/server/service/entitiy/user/DefaultUserService.java
  2. 2
      common/dao-api/src/main/java/org/thingsboard/server/dao/user/UserService.java
  3. 10
      dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java

10
application/src/main/java/org/thingsboard/server/service/entitiy/user/DefaultUserService.java

@ -90,16 +90,10 @@ public class DefaultUserService extends AbstractTbEntityService implements TbUse
public UserActivationLink getActivationLink(TenantId tenantId, CustomerId customerId, UserId userId, HttpServletRequest request) throws ThingsboardException { public UserActivationLink getActivationLink(TenantId tenantId, CustomerId customerId, UserId userId, HttpServletRequest request) throws ThingsboardException {
UserCredentials userCredentials = userService.findUserCredentialsByUserId(tenantId, userId); UserCredentials userCredentials = userService.findUserCredentialsByUserId(tenantId, userId);
if (!userCredentials.isEnabled() && userCredentials.getActivateToken() != null) { if (!userCredentials.isEnabled() && userCredentials.getActivateToken() != null) {
long ttl = userCredentials.getActivationTokenTtl(); userCredentials = userService.refreshUserActivationToken(tenantId, userCredentials);
if (ttl < TimeUnit.MINUTES.toMillis(15)) { // renew link if less than 15 minutes before expiration
userCredentials = userService.generateUserActivationToken(userCredentials);
userCredentials = userService.saveUserCredentials(tenantId, userCredentials);
ttl = userCredentials.getActivationTokenTtl();
log.debug("[{}][{}] Regenerated expired user activation token", tenantId, userId);
}
String baseUrl = systemSecurityService.getBaseUrl(tenantId, customerId, request); String baseUrl = systemSecurityService.getBaseUrl(tenantId, customerId, request);
String link = baseUrl + "/api/noauth/activate?activateToken=" + userCredentials.getActivateToken(); String link = baseUrl + "/api/noauth/activate?activateToken=" + userCredentials.getActivateToken();
return new UserActivationLink(link, ttl); return new UserActivationLink(link, userCredentials.getActivationTokenTtl());
} else { } else {
throw new ThingsboardException("User is already activated!", ThingsboardErrorCode.BAD_REQUEST_PARAMS); throw new ThingsboardException("User is already activated!", ThingsboardErrorCode.BAD_REQUEST_PARAMS);
} }

2
common/dao-api/src/main/java/org/thingsboard/server/dao/user/UserService.java

@ -63,6 +63,8 @@ public interface UserService extends EntityDaoService {
UserCredentials generateUserActivationToken(UserCredentials userCredentials); UserCredentials generateUserActivationToken(UserCredentials userCredentials);
UserCredentials refreshUserActivationToken(TenantId tenantId, UserCredentials userCredentials);
UserCredentials replaceUserCredentials(TenantId tenantId, UserCredentials userCredentials); UserCredentials replaceUserCredentials(TenantId tenantId, UserCredentials userCredentials);
void deleteUser(TenantId tenantId, User user); void deleteUser(TenantId tenantId, User user);

10
dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java

@ -300,6 +300,16 @@ public class UserServiceImpl extends AbstractCachedEntityService<UserCacheKey, U
return userCredentials; return userCredentials;
} }
@Override
public UserCredentials refreshUserActivationToken(TenantId tenantId, UserCredentials userCredentials) {
if (userCredentials.getActivationTokenTtl() < TimeUnit.MINUTES.toMillis(15)) { // renew link if less than 15 minutes before expiration
userCredentials = generateUserActivationToken(userCredentials);
userCredentials = saveUserCredentials(tenantId, userCredentials);
}
log.debug("[{}][{}] Regenerated expired user activation token", tenantId, userCredentials.getUserId());
return userCredentials;
}
@Override @Override
public UserCredentials replaceUserCredentials(TenantId tenantId, UserCredentials userCredentials) { public UserCredentials replaceUserCredentials(TenantId tenantId, UserCredentials userCredentials) {
log.trace("Executing replaceUserCredentials [{}]", userCredentials); log.trace("Executing replaceUserCredentials [{}]", userCredentials);

Loading…
Cancel
Save