Browse Source

refactoring

pull/8089/head
dashevchenko 4 years ago
parent
commit
ab643063f2
  1. 22
      application/src/main/java/org/thingsboard/server/controller/AuthController.java

22
application/src/main/java/org/thingsboard/server/controller/AuthController.java

@ -18,7 +18,6 @@ package org.thingsboard.server.controller;
import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.ObjectNode;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import lombok.Getter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@ -75,8 +74,8 @@ import java.util.concurrent.ConcurrentMap;
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
public class AuthController extends BaseController { public class AuthController extends BaseController {
@Value("${rate_limits.reset_password_per_user.configuration:5:3600}") @Value("${rate_limits.reset_password_per_user.configuration:5:3600}")
@Getter
private String defaultLimitsConfiguration; private String defaultLimitsConfiguration;
private final ConcurrentMap<UserId, TbRateLimits> resetPasswordRateLimits = new ConcurrentHashMap<>(); private final ConcurrentMap<UserId, TbRateLimits> resetPasswordRateLimits = new ConcurrentHashMap<>();
private final BCryptPasswordEncoder passwordEncoder; private final BCryptPasswordEncoder passwordEncoder;
@ -222,12 +221,11 @@ public class AuthController extends BaseController {
String resetURI = "/login/resetPassword"; String resetURI = "/login/resetPassword";
UserCredentials userCredentials = userService.findUserCredentialsByResetToken(TenantId.SYS_TENANT_ID, resetToken); UserCredentials userCredentials = userService.findUserCredentialsByResetToken(TenantId.SYS_TENANT_ID, resetToken);
TbRateLimits tbRateLimits = getTbRateLimits(userCredentials);
if (!tbRateLimits.tryConsume()) {
return ResponseEntity.status(HttpStatus.TOO_MANY_REQUESTS).build();
}
if (userCredentials != null) { if (userCredentials != null) {
TbRateLimits tbRateLimits = getTbRateLimits(userCredentials.getUserId());
if (!tbRateLimits.tryConsume()) {
return ResponseEntity.status(HttpStatus.TOO_MANY_REQUESTS).build();
}
try { try {
URI location = new URI(resetURI + "?resetToken=" + resetToken); URI location = new URI(resetURI + "?resetToken=" + resetToken);
headers.setLocation(location); headers.setLocation(location);
@ -340,12 +338,8 @@ public class AuthController extends BaseController {
} }
} }
private TbRateLimits getTbRateLimits(UserCredentials userCredentials) { private TbRateLimits getTbRateLimits(UserId userId) {
TbRateLimits rateLimit = resetPasswordRateLimits.get(userCredentials.getUserId()); return resetPasswordRateLimits.computeIfAbsent(userId,
if (rateLimit == null) { key -> new TbRateLimits(defaultLimitsConfiguration, true));
rateLimit = new TbRateLimits(defaultLimitsConfiguration, true);
resetPasswordRateLimits.put(userCredentials.getUserId(), rateLimit);
}
return rateLimit;
} }
} }

Loading…
Cancel
Save