11package com .example .solidconnection .auth .service ;
22
3- import static com .example .solidconnection .common .exception .ErrorCode .USER_NOT_FOUND ;
3+ import static com .example .solidconnection .common .exception .ErrorCode .SIGN_IN_FAILED ;
44
55import com .example .solidconnection .auth .dto .EmailSignInRequest ;
66import com .example .solidconnection .auth .dto .SignInResponse ;
77import com .example .solidconnection .common .exception .CustomException ;
88import com .example .solidconnection .siteuser .domain .AuthType ;
99import com .example .solidconnection .siteuser .domain .SiteUser ;
1010import com .example .solidconnection .siteuser .repository .SiteUserRepository ;
11- import java .util .Optional ;
1211import lombok .RequiredArgsConstructor ;
1312import org .springframework .security .crypto .password .PasswordEncoder ;
1413import org .springframework .stereotype .Service ;
14+ import org .springframework .transaction .annotation .Transactional ;
1515
16- /*
17- * 보안을 위해 이메일과 비밀번호 중 무엇이 틀렸는지 구체적으로 응답하지 않는다.
18- * */
1916@ Service
2017@ RequiredArgsConstructor
2118public class EmailSignInService {
@@ -24,19 +21,21 @@ public class EmailSignInService {
2421 private final SiteUserRepository siteUserRepository ;
2522 private final PasswordEncoder passwordEncoder ;
2623
24+ @ Transactional (readOnly = true )
2725 public SignInResponse signIn (EmailSignInRequest signInRequest ) {
28- Optional <SiteUser > optionalSiteUser = siteUserRepository .findByEmailAndAuthType (signInRequest .email (), AuthType .EMAIL );
29- if (optionalSiteUser .isPresent ()) {
30- SiteUser siteUser = optionalSiteUser .get ();
31- validatePassword (signInRequest .password (), siteUser .getPassword ());
32- return signInService .signIn (siteUser );
33- }
34- throw new CustomException (USER_NOT_FOUND , "이메일과 비밀번호를 확인해주세요." );
26+ SiteUser siteUser = getEmailMatchingUserOrThrow (signInRequest .email ());
27+ validatePassword (signInRequest .password (), siteUser .getPassword ());
28+ return signInService .signIn (siteUser );
29+ }
30+
31+ private SiteUser getEmailMatchingUserOrThrow (String email ) {
32+ return siteUserRepository .findByEmailAndAuthType (email , AuthType .EMAIL )
33+ .orElseThrow (() -> new CustomException (SIGN_IN_FAILED ));
3534 }
3635
3736 private void validatePassword (String rawPassword , String encodedPassword ) {
3837 if (!passwordEncoder .matches (rawPassword , encodedPassword )) {
39- throw new CustomException (USER_NOT_FOUND , "이메일과 비밀번호를 확인해주세요." );
38+ throw new CustomException (SIGN_IN_FAILED );
4039 }
4140 }
4241}
0 commit comments