fix forgot password
This commit is contained in:
parent
a32d5a499f
commit
9f1a9b9004
@ -55,7 +55,8 @@ public class JwtRequestFilter extends OncePerRequestFilter {
|
|||||||
private void isValidToken(HttpServletRequest request, String jwtToken) {
|
private void isValidToken(HttpServletRequest request, String jwtToken) {
|
||||||
String requestUrl = request.getRequestURI();
|
String requestUrl = request.getRequestURI();
|
||||||
String refreshTokenUrl = "/api/authentication/refresh-token";
|
String refreshTokenUrl = "/api/authentication/refresh-token";
|
||||||
if (!refreshTokenUrl.equals(requestUrl)) {
|
String forgotPasswordUrl = "/api/authentication/forgot-password";
|
||||||
|
if (!org.apache.commons.lang3.StringUtils.equalsAnyIgnoreCase(requestUrl, refreshTokenUrl, forgotPasswordUrl)) {
|
||||||
var isValid = isValidAuthenticateToken(jwtToken);
|
var isValid = isValidAuthenticateToken(jwtToken);
|
||||||
if (!isValid) {
|
if (!isValid) {
|
||||||
throw new BusinessException(HttpStatus.UNAUTHORIZED, "Invalid Access Token");
|
throw new BusinessException(HttpStatus.UNAUTHORIZED, "Invalid Access Token");
|
||||||
|
@ -3,14 +3,12 @@ package com.iconplus.smartproc.controller;
|
|||||||
import com.iconplus.smartproc.helper.model.EmptyRequest;
|
import com.iconplus.smartproc.helper.model.EmptyRequest;
|
||||||
import com.iconplus.smartproc.helper.model.EmptyResponse;
|
import com.iconplus.smartproc.helper.model.EmptyResponse;
|
||||||
import com.iconplus.smartproc.model.request.ChangePasswordRequest;
|
import com.iconplus.smartproc.model.request.ChangePasswordRequest;
|
||||||
|
import com.iconplus.smartproc.model.request.ForgotPasswordRequest;
|
||||||
import com.iconplus.smartproc.model.request.LoginRequest;
|
import com.iconplus.smartproc.model.request.LoginRequest;
|
||||||
import com.iconplus.smartproc.model.request.RefreshTokenRequest;
|
import com.iconplus.smartproc.model.request.RefreshTokenRequest;
|
||||||
import com.iconplus.smartproc.model.response.LoginResponse;
|
import com.iconplus.smartproc.model.response.LoginResponse;
|
||||||
import com.iconplus.smartproc.model.response.RefreshTokenResponse;
|
import com.iconplus.smartproc.model.response.RefreshTokenResponse;
|
||||||
import com.iconplus.smartproc.service.authentication.ChangePasswordService;
|
import com.iconplus.smartproc.service.authentication.*;
|
||||||
import com.iconplus.smartproc.service.authentication.LoginService;
|
|
||||||
import com.iconplus.smartproc.service.authentication.LogoutService;
|
|
||||||
import com.iconplus.smartproc.service.authentication.TokenManagementService;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
@CrossOrigin(origins = "http://localhost:8080", allowCredentials = "true")
|
@CrossOrigin(origins = "http://localhost:8080", allowCredentials = "true")
|
||||||
@ -18,19 +16,22 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
@RequestMapping("/api/authentication")
|
@RequestMapping("/api/authentication")
|
||||||
public class AuthenticationController {
|
public class AuthenticationController {
|
||||||
|
|
||||||
private LoginService loginService;
|
private final LoginService loginService;
|
||||||
private TokenManagementService tokenManagementService;
|
private final TokenManagementService tokenManagementService;
|
||||||
private LogoutService logoutService;
|
private final LogoutService logoutService;
|
||||||
private ChangePasswordService changePasswordService;
|
private final ChangePasswordService changePasswordService;
|
||||||
|
private final ForgotPasswordService forgotPasswordService;
|
||||||
|
|
||||||
public AuthenticationController(LoginService loginService,
|
public AuthenticationController(LoginService loginService,
|
||||||
TokenManagementService tokenManagementService,
|
TokenManagementService tokenManagementService,
|
||||||
LogoutService logoutService,
|
LogoutService logoutService,
|
||||||
ChangePasswordService changePasswordService) {
|
ChangePasswordService changePasswordService,
|
||||||
|
ForgotPasswordService forgotPasswordService) {
|
||||||
this.loginService = loginService;
|
this.loginService = loginService;
|
||||||
this.tokenManagementService = tokenManagementService;
|
this.tokenManagementService = tokenManagementService;
|
||||||
this.logoutService = logoutService;
|
this.logoutService = logoutService;
|
||||||
this.changePasswordService = changePasswordService;
|
this.changePasswordService = changePasswordService;
|
||||||
|
this.forgotPasswordService = forgotPasswordService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/login")
|
@PostMapping("/login")
|
||||||
@ -54,4 +55,9 @@ public class AuthenticationController {
|
|||||||
return changePasswordService.execute(changePasswordRequest);
|
return changePasswordService.execute(changePasswordRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/forgot-password")
|
||||||
|
public EmptyResponse forgotPassword(@RequestBody ForgotPasswordRequest forgotPasswordRequest) {
|
||||||
|
return forgotPasswordService.execute(forgotPasswordRequest);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,17 @@
|
|||||||
|
package com.iconplus.smartproc.model.request;
|
||||||
|
|
||||||
|
import com.iconplus.smartproc.helper.base.BaseRequest;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class ForgotPasswordRequest extends BaseRequest {
|
||||||
|
private String email;
|
||||||
|
private String newPassword;
|
||||||
|
private String confirmationPassword;
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
package com.iconplus.smartproc.service.authentication;
|
||||||
|
|
||||||
|
import com.iconplus.smartproc.exception.BusinessException;
|
||||||
|
import com.iconplus.smartproc.helper.model.EmptyResponse;
|
||||||
|
import com.iconplus.smartproc.helper.service.BaseService;
|
||||||
|
import com.iconplus.smartproc.model.request.ForgotPasswordRequest;
|
||||||
|
import com.iconplus.smartproc.repository.UsersRepository;
|
||||||
|
import com.iconplus.smartproc.service.CommonService;
|
||||||
|
import com.iconplus.smartproc.util.Constants;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ForgotPasswordService implements BaseService<ForgotPasswordRequest, EmptyResponse> {
|
||||||
|
|
||||||
|
private UsersRepository usersRepository;
|
||||||
|
private CommonService commonService;
|
||||||
|
public ForgotPasswordService(UsersRepository usersRepository,
|
||||||
|
CommonService commonService) {
|
||||||
|
this.usersRepository = usersRepository;
|
||||||
|
this.commonService = commonService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EmptyResponse execute(ForgotPasswordRequest input) {
|
||||||
|
|
||||||
|
var users = usersRepository.findByEmailAndIsDeleteFalse(input.getEmail())
|
||||||
|
.orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10001,
|
||||||
|
Constants.ERR_TTL_10001,
|
||||||
|
String.format(Constants.ERR_MSG_10001, "User", input.getEmail())));
|
||||||
|
|
||||||
|
String newPassword = commonService.getPassword(input.getNewPassword());
|
||||||
|
String confirmationPassword = commonService.getPassword(input.getConfirmationPassword());
|
||||||
|
|
||||||
|
|
||||||
|
if (!StringUtils.equalsIgnoreCase(newPassword, confirmationPassword)) {
|
||||||
|
throw new BusinessException(HttpStatus.CONFLICT,
|
||||||
|
Constants.ERR_CODE_10007,
|
||||||
|
Constants.ERR_TTL_10007,
|
||||||
|
Constants.ERR_MSG_10007);
|
||||||
|
}
|
||||||
|
|
||||||
|
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
|
||||||
|
users.setPassword(bCryptPasswordEncoder.encode(newPassword));
|
||||||
|
usersRepository.save(users);
|
||||||
|
|
||||||
|
return new EmptyResponse();
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user