-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
38733c4
commit 208b534
Showing
10 changed files
with
267 additions
and
0 deletions.
There are no files selected for viewing
23 changes: 23 additions & 0 deletions
23
User-Domain/src/main/java/com/dgsw/cns/user/spi/UserInfoSpi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package com.dgsw.cns.user.spi; | ||
|
||
import com.dgsw.cns.user.vo.MemberInfoVO; | ||
|
||
/** | ||
* 지원생의 기본 정보를 조회하는 서비스 인터페이스 | ||
*/ | ||
public interface UserInfoSpi { | ||
|
||
/** | ||
* 지원생의 기본 정보를 조회합니다. | ||
* <pre> | ||
* - 이름 | ||
* - 생일 | ||
* - 성별 | ||
* - 전화번호 | ||
* </pre> | ||
* @param id 지원생 식별키(PK) | ||
* @return 조회한 기본 정보를 반환합니다. | ||
*/ | ||
MemberInfoVO findUserInfo(final long id); | ||
|
||
} |
24 changes: 24 additions & 0 deletions
24
User-Domain/src/main/java/com/dgsw/cns/user/spi/UserParentSpi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package com.dgsw.cns.user.spi; | ||
|
||
import com.dgsw.cns.user.vo.MemberParentVO; | ||
|
||
/** | ||
* 지원생의 부모 정보를 조회 및 수정하는 서비스 인터페이스 | ||
*/ | ||
public interface UserParentSpi { | ||
|
||
/** | ||
* 지원생의 부모 정보를 수정 및 저장합니다. | ||
* @param id 지원생 식별키(PK) | ||
* @param memberParentVO 지원생의 부모 정보 | ||
*/ | ||
void modifyParentInfo(final long id, final MemberParentVO memberParentVO); | ||
|
||
/** | ||
* 지원생의 부모 정보를 조회합니다. | ||
* @param id 지원생 식별키(PK) | ||
* @return 조회한 부모 정보를 반환합니다. | ||
*/ | ||
MemberParentVO findParentInfoById(final long id); | ||
|
||
} |
35 changes: 35 additions & 0 deletions
35
User-Domain/src/main/java/com/dgsw/cns/user/spi/UserRegistrationSpi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
package com.dgsw.cns.user.spi; | ||
|
||
import com.dgsw.cns.user.spi.certification.PasswordCertificationSpi; | ||
import com.dgsw.cns.user.spi.certification.email.EmailCertificationSpi; | ||
|
||
/** | ||
* 유저 회원가입을 진행하는 서비스 인터페이스 | ||
* @see com.dgsw.cns.user.spi.certification.PasswordCertificationSpi | ||
* @see com.dgsw.cns.user.spi.certification.email.EmailCertificationSpi | ||
*/ | ||
public interface UserRegistrationSpi | ||
extends PasswordCertificationSpi, EmailCertificationSpi { | ||
|
||
/** | ||
* 이메일, 비밀번호, 이메일 인증 코드를 인자로 사용하여 회원가입을 진행합니다. | ||
* 이때, 이메일은 {@link EmailCertificationSpi#validationEmail(String)}를 통해 | ||
* 이메일 검증을 거챠야합니다. | ||
* Database 에 저장할 때에는 보안을 위해 | ||
* {@link PasswordCertificationSpi#encryptPassword(String)} | ||
* 를 통해 비밀번호를 반드시 암호화한 후, 저장을 해야합니다. | ||
* 저장할 대상(이메일)로 전송한 랜덤한 6자리(인증 코드) 역시 인증을 한 후 | ||
* 최종적으로 회원가입이 완료됩니다. | ||
* <pre> | ||
* {@link EmailCertificationSpi#sendCertificationCode(String)} | ||
* {@link EmailCertificationSpi#matches(String)} | ||
* </pre> | ||
* | ||
* | ||
* @param email | ||
* @param password | ||
* @param verificationCode | ||
*/ | ||
void register(final String email, final String password, final String verificationCode); | ||
|
||
} |
25 changes: 25 additions & 0 deletions
25
User-Domain/src/main/java/com/dgsw/cns/user/spi/UserVeteranSpi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
package com.dgsw.cns.user.spi; | ||
|
||
import com.dgsw.cns.user.vo.MemberVeteranVO; | ||
|
||
/** | ||
* 국가 보훈 코드를 저장하고 조회하는 서비스 인터페이스 | ||
*/ | ||
public interface UserVeteranSpi { | ||
|
||
/** | ||
* 국가 보훈 코드를 조회합니다. | ||
* @param id 지원생 식별키(PK) | ||
* @return 조회한 보훈 정보를 반환합니다. | ||
*/ | ||
MemberVeteranVO getVeteranInfo(final long id); | ||
|
||
/** | ||
* 국가 보훈 코드 및 보훈청을 입력합니다. | ||
* @param id 지원생 식별키(PK) | ||
* @param department 국가 보훈청 | ||
* @param veteranId 국가 보훈 번호 | ||
*/ | ||
void updateVeteranInfo(final long id, final String department, final String veteranId); | ||
|
||
} |
23 changes: 23 additions & 0 deletions
23
User-Domain/src/main/java/com/dgsw/cns/user/spi/certification/PasswordCertificationSpi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package com.dgsw.cns.user.spi.certification; | ||
|
||
/** | ||
* 비밀번호 암화 및 유효성 검증 서비스 인터페이스 | ||
*/ | ||
public interface PasswordCertificationSpi { | ||
|
||
/** | ||
* 비밀번호의 유효성을 검증합니다. | ||
* @param rawPassword 입력받은, 암호되지 않은 비밀번호 | ||
* @param encodedPassword 암호환된 비밀번호 | ||
* @return 비밀번호가 유효한지를 반환합니다. | ||
*/ | ||
boolean checkValidation(final String rawPassword, final String encodedPassword); | ||
|
||
/** | ||
* 비밀번호를 암호화합니다. | ||
* @param rawPassword 암호화되지 않은 비밀번호 | ||
* @return 암호환 비밀번호 | ||
*/ | ||
String encryptPassword(final String rawPassword); | ||
|
||
} |
23 changes: 23 additions & 0 deletions
23
User-Domain/src/main/java/com/dgsw/cns/user/spi/certification/UserLoginCertificationSpi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package com.dgsw.cns.user.spi.certification; | ||
|
||
import com.dgsw.cns.user.vo.certification.TokenVO; | ||
|
||
/** | ||
* 회원의 정보를 확인 후, 로그인을 진행하는 서비스 인터페이스 | ||
* @see com.dgsw.cns.user.api.certification.UserLoginApi | ||
* @see PasswordCertificationSpi | ||
*/ | ||
public interface UserLoginCertificationSpi extends PasswordCertificationSpi { | ||
|
||
/** | ||
* 로그인을 진행하기 위한 이메일과 비밀번호를 받아 | ||
* 회원의 유효성 확인 및 {@link #checkValidation(String, String)} 를 사용하여 비밀번호의 | ||
* 유효성을 확인한 후, JWT 토큰을 반환합니다. | ||
* @param email 회원의 이메일 | ||
* @param rawPassword 회원의 암호화되지 않은 비밀번호 | ||
* @return 액세스, 리프레시 JWT 토큰을 반환합니다. | ||
* @see TokenVO | ||
*/ | ||
TokenVO login(final String email, final String rawPassword); | ||
|
||
} |
29 changes: 29 additions & 0 deletions
29
...Domain/src/main/java/com/dgsw/cns/user/spi/certification/email/EmailCertificationSpi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
package com.dgsw.cns.user.spi.certification.email; | ||
|
||
import java.util.regex.Pattern; | ||
|
||
/** | ||
* 이메일 인증 코드 발송 및 검증 서비스 인터페이스 | ||
*/ | ||
public interface EmailCertificationSpi { | ||
|
||
Pattern EMAIL_REGEX = Pattern.compile("^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^.-]+@[a-zA-Z0-9.-]+$"); | ||
|
||
default boolean validationEmail(final String email) { | ||
return EMAIL_REGEX.matcher(email).matches(); | ||
} | ||
|
||
/** | ||
* 받은 이메일 인증코드(6자리)가 전송한 인증코드와 일치 하는 지를 확인 | ||
* @param code 클라이언트 측 이메일 인증코드 | ||
* @return 일치하다면 true, 아니라면 false | ||
*/ | ||
boolean matches(final String code); | ||
|
||
/** | ||
* 이메일로 인증코드(6자리)를 전송합니다. | ||
* @param email 코드를 전달할 이메일 | ||
*/ | ||
void sendCertificationCode(final String email); | ||
|
||
} |
22 changes: 22 additions & 0 deletions
22
...Domain/src/main/java/com/dgsw/cns/user/spi/certification/token/TokenCertificationSpi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package com.dgsw.cns.user.spi.certification.token; | ||
|
||
/** | ||
* JWT 토큰의 유효성을 검증합니다. | ||
*/ | ||
public interface TokenCertificationSpi { | ||
|
||
/** | ||
* JWT 토큰의 서명을 검증합니다. | ||
* @param jwtToken JWT 토큰 | ||
* @return 서명이 일치하다면, true. 아니라면, false 를 반환합니다. | ||
*/ | ||
boolean certificateToken(final String jwtToken); | ||
|
||
/** | ||
* JWT 토큰을 파싱하여, subject 를 찾습니다. | ||
* @param jwtToken JWT 토큰 | ||
* @return 찾은 subject 를 반환합니다. | ||
*/ | ||
String extractToken(final String jwtToken); | ||
|
||
} |
21 changes: 21 additions & 0 deletions
21
User-Domain/src/main/java/com/dgsw/cns/user/spi/certification/token/TokenReissueSpi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package com.dgsw.cns.user.spi.certification.token; | ||
|
||
import com.dgsw.cns.user.vo.certification.TokenVO; | ||
|
||
/** | ||
* 엑세스 토큰이 만료된 상태에서 리프레시 토큰을 사용하여, | ||
* 토큰들을 재발급받도록 합니다. | ||
*/ | ||
public interface TokenReissueSpi { | ||
|
||
/** | ||
* JWT 리프레쉬 토큰의 body 와 header 등을 파싱하여, | ||
* 얻은 회원의 식별키(PK)의 데이터 유효성 확인, | ||
* 존재하는 경우, 새로운 JWT 토큰들을 반환하도록 합니다. | ||
* 이때, 이미 존재하던 리프레시 토큰의 유효 기간은 매우 길기에 사라지도록 유도합니다. | ||
* @param refreshToken JWT 리프레시 토큰 | ||
* @return 새로운 엑세스 토큰 및 리프레시 토큰을 반환힙니다. | ||
*/ | ||
TokenVO reissueToken(final String refreshToken); | ||
|
||
} |
42 changes: 42 additions & 0 deletions
42
User-Domain/src/main/java/com/dgsw/cns/user/spi/certification/token/TokenSpi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package com.dgsw.cns.user.spi.certification.token; | ||
|
||
import java.security.Key; | ||
import java.util.Optional; | ||
|
||
/** | ||
* JWT 토큰을 생성하고, HTTP 헤더로부터 파싱하는 서비스 인터페이스 | ||
* @see TokenCertificationSpi | ||
* @see TokenReissueSpi | ||
*/ | ||
public interface TokenSpi extends TokenReissueSpi, TokenCertificationSpi { | ||
|
||
/** | ||
* JWT 토큰을 발급합니다. | ||
* @param type JWT 종류(엑세스/리프레시) | ||
* @param id JWT subject | ||
* @param expireSecond JWT 만료 일자 | ||
* @return type 종류의 JWT 토큰을 생성하여, 반환합니다. | ||
*/ | ||
String generateToken(final String type, final String id, final long expireSecond); | ||
|
||
/** | ||
* JWT 에 사용할 서명입니다. | ||
* <pre> | ||
* {@code signWith(key, algorithm)} | ||
* </pre> | ||
* @param type JWT 종류(엑세스/리프레시) | ||
* @return type 종류의 JWT 토큰에 사용할 서명을 반환합니다. | ||
*/ | ||
Key generateKey(final String type); | ||
|
||
/** | ||
* HTTP Header 의 특정 부분을 받아와 해당 부분에 JWT 토큰을 찾습니다. | ||
* 만일 UncheckedException 이 발생한 경우, 그대로 예외를 전달하고 <br> | ||
* CheckedException 이 발생한 경우, {@link Optional#ofNullable(Object)} 를 | ||
* 사용하여 반환한다. | ||
* @param header HTTP Header 의 일부분 | ||
* @return 찾은 헤더값에 있는 JWT 토큰 반환 | ||
*/ | ||
Optional<String> getTokenFromHeader(String header); | ||
|
||
} |