add api forgot password

This commit is contained in:
dirgantarasiahaan 2023-05-25 18:07:24 +07:00
parent c4700af832
commit f8f489f565
3 changed files with 68 additions and 1 deletions

View File

@ -2,10 +2,12 @@ package com.iconplus.smartproc.controller;
import com.iconplus.smartproc.helper.model.EmptyRequest;
import com.iconplus.smartproc.helper.model.EmptyResponse;
import com.iconplus.smartproc.model.request.ForgotPasswordRequest;
import com.iconplus.smartproc.model.request.LoginRequest;
import com.iconplus.smartproc.model.request.RefreshTokenRequest;
import com.iconplus.smartproc.model.response.LoginResponse;
import com.iconplus.smartproc.model.response.RefreshTokenResponse;
import com.iconplus.smartproc.service.authentication.ForgotPasswordService;
import com.iconplus.smartproc.service.authentication.LoginService;
import com.iconplus.smartproc.service.authentication.LogoutService;
import com.iconplus.smartproc.service.authentication.TokenManagementService;
@ -19,13 +21,16 @@ public class AuthenticationController {
private LoginService loginService;
private TokenManagementService tokenManagementService;
private LogoutService logoutService;
private ForgotPasswordService forgotPasswordService;
public AuthenticationController(LoginService loginService,
TokenManagementService tokenManagementService,
LogoutService logoutService) {
LogoutService logoutService,
ForgotPasswordService forgotPasswordService) {
this.loginService = loginService;
this.tokenManagementService = tokenManagementService;
this.logoutService = logoutService;
this.forgotPasswordService = forgotPasswordService;
}
@PostMapping("/login")
@ -44,4 +49,9 @@ public class AuthenticationController {
}
@PostMapping("/forgot-password")
public EmptyResponse forgotPassword(@RequestBody ForgotPasswordRequest forgotPasswordRequest) {
return forgotPasswordService.execute(forgotPasswordRequest);
}
}

View File

@ -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 currentPassword;
private String newPassword;
private String confirmationPassword;
}

View File

@ -0,0 +1,40 @@
package com.iconplus.smartproc.service.authentication;
import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.helper.context.ApiContext;
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 org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
@Service
public class ForgotPasswordService implements BaseService<ForgotPasswordRequest, EmptyResponse> {
private ApiContext apiContext;
private UsersRepository usersRepository;
public ForgotPasswordService(UsersRepository usersRepository,
ApiContext apiContext) {
this.usersRepository = usersRepository;
this.apiContext = apiContext;
}
@Override
public EmptyResponse execute(ForgotPasswordRequest input) {
Long id = Long.valueOf(apiContext.getUserId());
var users = usersRepository.findByIdAndIsDeleteFalse(id).orElseThrow(() -> new BusinessException("err", "err", "err"));
if (!StringUtils.equalsIgnoreCase(input.getCurrentPassword(), users.getPassword()) ||
StringUtils.equalsIgnoreCase(input.getNewPassword(), users.getPassword()) ||
!StringUtils.equalsIgnoreCase(input.getConfirmationPassword(), input.getNewPassword())) {
throw new BusinessException("err", "err", "err");
}
users.setPassword(input.getNewPassword());
usersRepository.save(users);
return new EmptyResponse();
}
}