| | |
| | | import com.pollex.pam.business.aop.logging.audit.AuditLoggingInject; |
| | | import com.pollex.pam.business.security.token.EServiceAuthenticationToken; |
| | | import com.pollex.pam.business.service.ConsultantService; |
| | | import com.pollex.pam.business.service.util.AesUtil; |
| | | import com.pollex.pam.business.web.errors.OtpLoginFailException; |
| | | import com.pollex.pam.business.web.vm.EServiceLoginVM; |
| | | import com.pollex.pam.security.jwt.JWTFilter; |
| | |
| | | @RestController |
| | | @RequestMapping("/api/eService") |
| | | public class EServiceResource { |
| | | |
| | | |
| | | private final static Logger log = LoggerFactory.getLogger(EServiceResource.class); |
| | | |
| | | |
| | |
| | | @Autowired |
| | | ConsultantService consultantService; |
| | | |
| | | @Autowired |
| | | AesUtil aesUtil; |
| | | |
| | | @AuditLoggingInject(type = CONSULTANT_LOGIN) |
| | | @PostMapping("/authenticate/{imgCode}") |
| | | public ResponseEntity<UserJWTController.JWTToken> authorize( |
| | | public void authorize( |
| | | @RequestBody EServiceLoginVM eServiceLoginVM |
| | | , HttpServletResponse response, HttpServletRequest request, |
| | | @PathVariable String imgCode){ |
| | | @PathVariable String imgCode) throws Exception{ |
| | | |
| | | |
| | | String paswword = aesUtil.aesDecode(eServiceLoginVM.getPassword()); |
| | | if(!StringUtils.hasText(paswword)) { |
| | | throw new OtpLoginFailException("密碼解密失敗"); |
| | | } |
| | | |
| | | HttpSession session = request.getSession(); |
| | | String sessionImpCode = (String) session.getAttribute("img_code"); |
| | | |
| | | |
| | | if (!StringUtils.hasText(sessionImpCode) |
| | | || !StringUtils.hasText(imgCode)) { |
| | | throw new OtpLoginFailException("驗證碼輸入錯誤"); |
| | | } |
| | | |
| | | |
| | | if(!imgCode.equals(sessionImpCode)) { |
| | | throw new OtpLoginFailException("驗證碼輸入錯誤"); |
| | | } |
| | | |
| | | session.setAttribute("img_code", null); |
| | | |
| | | EServiceAuthenticationToken authenticationToken = new EServiceAuthenticationToken( |
| | | EServiceAuthenticationToken authenticationToken = new EServiceAuthenticationToken( |
| | | eServiceLoginVM.getUsername(), |
| | | eServiceLoginVM.getPassword() |
| | | paswword |
| | | ); |
| | | |
| | | Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken); |
| | | consultantService.updateLoginTime(eServiceLoginVM.getUsername()); |
| | | SecurityContextHolder.getContext().setAuthentication(authenticationToken); |
| | | |
| | | String jwt = tokenProvider.createToken(authentication, false); |
| | | HttpHeaders httpHeaders = new HttpHeaders(); |
| | | httpHeaders.add(JWTFilter.AUTHORIZATION_HEADER, "Bearer" + jwt); |
| | | return new ResponseEntity<>(new UserJWTController.JWTToken(jwt), httpHeaders, HttpStatus.OK); |
| | | session.setAttribute("authentication", authentication); |
| | | } |
| | | } |