|
1 | 1 | package com.back.domain.user.service; |
2 | 2 |
|
| 3 | +import com.back.domain.user.dto.RefreshTokenResDto; |
3 | 4 | import com.back.domain.user.entity.User; |
4 | 5 | import com.back.domain.user.repository.UserRepository; |
5 | 6 | import com.back.global.exception.ServiceException; |
|
24 | 25 | @RequiredArgsConstructor |
25 | 26 | public class UserAuthService { |
26 | 27 |
|
27 | | - static Set<String> param1 = Set.of("두둑한", "날씬한", "만취한", "알딸딸한", "얼큰한", "시트러스한", "도수높은", "톡쏘는", "거품가득한", "하이볼한", |
28 | | - "앙증맞은", "쓸쓸한", "거만한", "산만한", "귀찮은", "삐딱한", "맛이간", "저세상급", "시궁창스러운", "기묘한", |
29 | | - "졸린", "센치한", "철학적인", "무중력의", "뽀송한", "전투적인", "배부른", "대충한", "쩌는", "철지난", |
30 | | - "절규하는", "맞춤형", "다급한", "찌뿌둥한", "구수한", "문어발적인", "자포자기한", "터무니없는", "귀여운척하는", |
31 | | - "심드렁한", "무심한", "번쩍이는", "붉그레한", "밤새는", "좌절한", "의기양양한", "비굴한", "터프한", "흘러내린", |
32 | | - "공허한", "허무한", "헛기침하는", "뿜어대는", "질척한", "기어다니는", "헤매는", "삐죽한", "악에받친", "격렬한", |
33 | | - "삐까번쩍한", "오지랖넓은", "쪼르르거리는", "꿀꺽거리는", "머쓱한", "휘청대는", "추접스러운", "천방지축인", "어리둥절한", "질주하는", |
34 | | - "겸연쩍은", "뿌연", "썩은", "짠내나는", "철썩같은", "흥건한", "안간힘쓰는", "뜨끈한", "꾸덕한", "동공지진난", |
35 | | - "덕지덕지한", "비밀스러운", "개운한", "심란한", "음울한", "터질듯한", "달달한", "사악한", "기괴한", "용맹한", |
36 | | - "껄끄러운", "헐떡이는", "허둥대는", "분란스러운", "애매한", "찐득한", "허기진", "쩔어버린", "몽롱한", "허세떠는", |
37 | | - "황당한", "거대하고작은", "대차게구린", "어이없는", "두통약", "지갑", "이쑤시개", "돌침대", "고무장갑", "손수건", |
38 | | - "바람개비", "지하철표", "송진가루", "철가방", "머리끈", "양말한짝", "라이터", "숟가락", "스티커", "드럼통", |
39 | | - "열쇠꾸러미", "벼락", "대걸레", "파리채", "앙금빵", "선풍기날개", "스티로폼", "건전지", "껌종이", "소화전", |
40 | | - "비닐우산", "고드름", "전등갓", "양초", "지우개가루", "국자", "밥솥", "연필심", "비둘기깃털", "찜질팩", |
41 | | - "청테이프", "김밥말이", "곰팡이", "청소기", "밤송이", "옥수수수염", "철창살", "휴지심", "선반", "곽티슈", |
42 | | - "스프링노트", "고향집된장", "머드팩", "장독대", "뒤꿈치각질", "어묵꼬치", "환풍기", "군고구마", "카세트테이프", |
43 | | - "빨래건조대", "박카스병", "우체통", "주차권", "털실뭉치", "지하수", "깃털베개", "추리닝", "이불각", "육포", |
44 | | - "빨대", "지렁이분양소", "김칫국", "오징어채", "전기장판", "꽃병", "도시락통", "구급상자", "양배추잎", "고무줄", |
45 | | - "망치", "유통기한", "알람시계", "방범창", "신발깔창"); |
| 28 | + static Set<String> param1 = Set.of("두둑한", "날씬한", "만취한", "알딸딸", "얼큰한", "시트러스", "도수높은", "톡쏘는", "거품가득", "하이볼한", |
| 29 | + "앙증맞은", "쓸쓸한", "거만한", "산만한", "귀찮은", "삐딱한", "맛이간", "저세상급", "시궁창", "기묘한", |
| 30 | + "졸린", "센치한", "철학적인", "무중력", "뽀송한", "전투적인", "배부른", "대충한", "쩌는", "철지난", |
| 31 | + "절규하는", "맞춤형", "다급한", "찌뿌둥한", "구수한", "문어발", "자포자기", "터무니", "귀척", "심드렁한", |
| 32 | + "무심한", "번쩍이는", "붉그레한", "밤새는", "좌절한", "의기양양", "비굴한", "터프한", "흘러내린", "공허한", |
| 33 | + "허무한", "헛기침", "뿜어대는", "질척한", "기어다님", "헤매는", "삐죽한", "악에받친", "격렬한", "삐까번쩍", |
| 34 | + "오지랖", "쪼르르", "꿀꺽", "머쓱한", "휘청대는", "추접", "천방지축", "어리둥절", "질주하는", "겸연쩍은", |
| 35 | + "뿌연", "썩은", "짠내나는", "철썩", "흥건한", "안간힘", "뜨끈한", "꾸덕한", "동공지진", "덕지덕지", |
| 36 | + "비밀", "개운한", "심란한", "음울한", "터질듯한", "달달한", "사악한", "기괴한", "용맹한", "껄끄러운", |
| 37 | + "헐떡이는", "허둥대는", "분란", "애매한", "찐득한", "허기진", "쩔어버린", "몽롱한", "허세", "황당한", |
| 38 | + "거대작음", "대차게구림", "어이없음", "두통약", "지갑", "이쑤시개", "돌침대", "고무장갑", "손수건", "바람개비", |
| 39 | + "지하철표", "송진가루", "철가방", "머리끈", "양말한짝", "라이터", "숟가락", "스티커", "드럼통", "열쇠", |
| 40 | + "벼락", "대걸레", "파리채", "앙금빵", "날개", "스티로폼", "건전지", "껌종이", "소화전", "비닐우산", |
| 41 | + "고드름", "전등갓", "양초", "지우개", "국자", "밥솥", "연필심", "깃털", "찜질팩", "청테이프", |
| 42 | + "김밥말이", "곰팡이", "청소기", "밤송이", "옥수수", "철창살", "휴지심", "선반", "곽티슈", "스프링", |
| 43 | + "고향된장", "머드팩", "장독대", "각질", "어묵꼬치", "환풍기", "군고구마", "카세트", "건조대", "박카스병", |
| 44 | + "우체통", "주차권", "털실뭉치", "지하수", "추리닝", "이불각", "육포", "빨대", "지렁이", "김칫국", |
| 45 | + "오징어채", "전기장판", "꽃병", "도시락통", "구급상자", "양배추잎", "고무줄", "망치", "유통기한", "알람시계", |
| 46 | + "방범창", "깔창", "만취육포", "날씬국자", "터프각질", "음울밥솥", "사악김치", "허세숟갈", "삐딱곰팡"); |
46 | 47 |
|
47 | 48 | static Set<String> param2 = Set.of("도토리딱개구리", "아프리카들개", "강남성인군자", "술고래", "알코올러버", "겨자잎", "청개구리", "산수유", |
48 | 49 | "맥주문어", "칵테일앵무새", "보드카수달", "진토닉거북이", "테킬라코요테", "럼펭귄", "사케고양이", "막걸리두꺼비", |
@@ -134,46 +135,56 @@ public String generateNickname(String baseNickname) { |
134 | 135 |
|
135 | 136 | public void issueTokens(HttpServletResponse response, Long userId, String email, String nickname) { |
136 | 137 | String accessToken = jwtUtil.generateAccessToken(userId, email, nickname); |
137 | | - String refreshToken = refreshTokenService.generateRefreshToken(userId, email); |
| 138 | + String refreshToken = refreshTokenService.generateRefreshToken(userId); |
138 | 139 |
|
139 | 140 | jwtUtil.addAccessTokenToCookie(response, accessToken); |
140 | 141 | jwtUtil.addRefreshTokenToCookie(response, refreshToken); |
141 | 142 | } |
142 | 143 |
|
143 | | - public boolean refreshTokens(HttpServletRequest request, HttpServletResponse response) { |
| 144 | + public RefreshTokenResDto refreshTokens(HttpServletRequest request, HttpServletResponse response) { |
144 | 145 | try { |
145 | 146 | String oldRefreshToken = jwtUtil.getRefreshTokenFromCookie(request); |
146 | 147 |
|
147 | 148 | if (oldRefreshToken == null || !refreshTokenService.validateToken(oldRefreshToken)) { |
148 | | - return false; |
| 149 | + return null; |
149 | 150 | } |
150 | 151 |
|
151 | 152 | Optional<RefreshToken> tokenData = refreshTokenRepository.findByToken(oldRefreshToken); |
152 | 153 | if (tokenData.isEmpty()) { |
153 | | - return false; |
| 154 | + return null; |
154 | 155 | } |
155 | 156 |
|
156 | 157 | RefreshToken refreshTokenEntity = tokenData.get(); |
157 | 158 | Long userId = refreshTokenEntity.getUserId(); |
158 | | - String email = refreshTokenEntity.getEmail(); |
159 | 159 |
|
160 | | - // DB에서 현재 nickname 조회 |
161 | | - Optional<User> user = userRepository.findById(userId); |
162 | | - if (user.isEmpty()) { |
163 | | - return false; |
| 160 | + // DB에서 사용자 정보 조회 |
| 161 | + Optional<User> userOpt = userRepository.findById(userId); |
| 162 | + if (userOpt.isEmpty()) { |
| 163 | + return null; |
164 | 164 | } |
165 | | - String nickname = user.get().getNickname(); |
| 165 | + |
| 166 | + User user = userOpt.get(); |
166 | 167 |
|
167 | 168 | String newRefreshToken = refreshTokenService.rotateToken(oldRefreshToken); |
168 | | - String newAccessToken = jwtUtil.generateAccessToken(userId, email, nickname); |
| 169 | + String newAccessToken = jwtUtil.generateAccessToken(userId, user.getEmail(), user.getNickname()); |
169 | 170 |
|
170 | 171 | jwtUtil.addAccessTokenToCookie(response, newAccessToken); |
171 | 172 | jwtUtil.addRefreshTokenToCookie(response, newRefreshToken); |
172 | 173 |
|
173 | | - return true; |
| 174 | + return RefreshTokenResDto.builder() |
| 175 | + .accessToken(newAccessToken) |
| 176 | + .user( |
| 177 | + RefreshTokenResDto.UserInfoDto.builder() |
| 178 | + .id(user.getId().toString()) |
| 179 | + .nickname(user.getNickname()) |
| 180 | + .isFirstLogin(user.isFirstLogin()) |
| 181 | + .abvDegree(user.getAbvDegree()) |
| 182 | + .build() |
| 183 | + ) |
| 184 | + .build(); |
174 | 185 | } catch (Exception e) { |
175 | 186 | log.error("토큰 갱신 중 오류 발생: {}", e.getMessage()); |
176 | | - return false; |
| 187 | + return null; |
177 | 188 | } |
178 | 189 | } |
179 | 190 |
|
|
0 commit comments