UserController 에서 getVerifyEmail 생성.
enums에 UserEmailVerifyResult 생성
vos에 UserEmailVerifyVo 생성
상속하고 인터페이스를 구현. ( 멤버변수 만들고 구현할 것 )
UserController 에서
UserEmailVerifyVo 불러오고, "c"와 "s"를 @RequestParam으로 연결
emailVerificationTemplate.html 의 c와 s
UserService verifyEmail 메서드 추가
IUserMapper
xml에서 SELECT문 추가
code와 salt의 SELECT
UserController 에서 추가
userEmailVerifyVo.setIndex(0);
IUserMapper 에서 select 메서드를 selectUserByEmailAndPassword로 변경.
xml의 select도 이름을 변경해준다.
IUserMapper 에서 길었던 매개변수 이름을 지우고
@Param 어노테이션을 이용해 변경
xml 에서 parameterType 을 지워준다. @param의 이름이 #{이름} 과 같음.
IUserMapper 에서 생성 후
xml 에서도 추가
UserService 에서 userMapper 안에 이 내용으로 변경
userEmailVerifyVo.getCode(),
userEmailVerifyVo.getSalt()
맨 아래에 내용 추가
상수 3개 잘라내서
맨 위로 쉬프트 F6으로 이름 대문자 변경
맨 아래 내용 추가.
IUserMapper 에서 두개 추가
xml에서 update updateUser추가
xml에서 update updateUserEmailVerificationCode 추가
UserService 에서
컨트롤러에서
verifyEmail.html 생성
회원가입 후 로그인 => 이메일 인증 시
해당 회원의 email_verified_flag 가 1이 된다.
expired_flag 도 1이 된다.
다시 이메일 인증 시 만료 | 이미 사용되었다 하고 뜬다.
c와 s 난수화가 무지막지하군..
http://127.0.0.1:8080/user/verify-email?c=de0d528abe56bccf07b10af3ce79fa09636617c0c6e8ba160e8fbd37387317e3a8285bbb03d72f475c5d79a22c99b366f4f1eb22836828529df3d2de46a8dc12&s=63b8f86d357e8f6ac7abf6e50fec4eb1218e7201ea2802a32b73be6fecd8b883c4bec8f1d683bcebcff3474e019db1d83d86cfcec465f8cc20b15b065ac75cfa60568bdca6a8c3942bbd52b197ecc896f8b4f8f0f7c9d628d98054e84feb6e7feaf11e9bb8d943dac0b7f21ab1b1943002c36745357b74a6eaa774b4960037e5
지금까지 결과값을 남긴 것은 회원가입, 이메일 인증, 로그인 이렇게 3개이다.
FAILURE, SUCCESS 등.
이 결과값을 DB로 넘겨보려 한다.
console 에서 테이블 두개 추가
system_activity_legs
system_exception_logs
client_ua 는 user agent의 줄임말
result :누가 어떤 브라우저로 어떤 주소를 요청했는데 어떤 결과가 나왔다 라는 뜻
오류가 터졌을 때 밑에 쭉 뜨는 게 stacktrace
SystemService
StandardController
UserController가 상속
public class UserController extends StandardController
UserController메서드에 SystemService 추가 후
super(systemService)
SystemActivityLogEntity 에서 만든 DB의 필드 작성. 게터세터까지.
SystemService 에서
각 Vo들은 IResult 인터페이스의 메서드를 오버라이드하였고 (그 메서드의 타입은 각각의 enum), 각 Entity의 조건과 결과를 담은 result로 재정의하겠다.
ISystemMapper
SystemMapper.xml생성
UserController의 postLogin
HttpServletRequest request와
this.systemService.putActivityLog(request, userLoginVo);
생성
2번쨰 파라미터 자리에는 IResult타입넣어야 함. 각 Vo는 IResult를 구현.
postRegister 도 마찬가지
this.systemService.putActivityLog(request, userRegisterVo);
getVerifyEmail 도 마찬가지
this.systemService.putActivityLog(request, userEmailVerifyVo);
회원가입 진행
회원가입 성공, 이메일 인증 발송 성공, 인증하기 성공, 로그인 성공