|
5 | 5 |
|
6 | 6 | ## π Main Function |
7 | 7 |
|
8 | | ---- |
| 8 | +### **π€ νμ κΈ°λ₯ (μΈμ¦ λ° μΈκ°)** |
| 9 | + |
| 10 | +> λ³Έ νλ‘μ νΈλ **μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ API**λ₯Ό νμ©νμ¬ μ¬μ©μ μΈμ¦ λ° μΈκ°λ₯Ό μ²λ¦¬ν©λλ€. |
| 11 | +
|
| 12 | +1. μ¬μ©μκ° μΉ΄μΉ΄μ€ λ‘κ·ΈμΈμ μλνλ©΄, μλ²λ **OAuth2User κ°μ²΄**λ₯Ό ν΅ν΄ λ€μκ³Ό κ°μ μ¬μ©μ μ 보λ₯Ό λ°μ μ μ₯ν©λλ€. |
| 13 | + - μ΄λ©μΌ |
| 14 | + - λλ€μ |
| 15 | + - μΉ΄μΉ΄μ€ ID |
| 16 | + |
| 17 | +2. μΉ΄μΉ΄μ€λ‘λΆν° **μΈμ¦ μ½λ**λ₯Ό λ°μ ν, μ΄λ₯Ό κΈ°λ°μΌλ‘ **JWT ν ν°**μ λ°κΈν©λλ€: |
| 18 | + - `AccessToken`μ λΈλΌμ°μ μ **μΏ ν€**μ μ μ₯λ©λλ€. |
| 19 | + - **XSS 곡격 λ°©μ§**: `HttpOnly` μμ±μ μ μ©νμ¬ μλ°μ€ν¬λ¦½νΈλ₯Ό ν΅ν μ κ·Όμ μ°¨λ¨νκ³ λ³΄μμ±μ κ°νν©λλ€. |
| 20 | + - **νΈμμ±**: μΏ ν€λ λμΌ λλ©μΈ μμ² μ **μλμΌλ‘ HTTP μμ²μ ν¬ν¨**λλ―λ‘, νλ‘ νΈμλμμ ν ν°μ μ§μ ν€λμ μΆκ°ν νμκ° μμ΅λλ€. |
| 21 | + - `RefreshToken`μ **Redis**μ μ μ₯λμ΄ μμ νκ² κ΄λ¦¬λ©λλ€. |
| 22 | + |
| 23 | +3. μ¬μ©μκ° **λ‘κ·Έμμ**ν κ²½μ° λ€μκ³Ό κ°μ μ²λ¦¬κ° μ΄λ£¨μ΄μ§λλ€: |
| 24 | + - μΏ ν€μ μ μ₯λ `AccessToken`μ **μ¦μ λ§λ£**μν΅λλ€. |
| 25 | + - ν΄λΉ `AccessToken`μ **Redis λΈλ리μ€νΈμ λ±λ‘**λμ΄ λ μ΄μ μ¬μ©ν μ μλλ‘ μ²λ¦¬ν©λλ€. |
| 26 | + |
| 27 | +### π μΉ΄μΉ΄μ€ κ³΅μ κΈ°λ₯ |
| 28 | + |
| 29 | +> μΉ΄μΉ΄μ€ κ³΅μ APIλ₯Ό μ¬μ©νμ¬ μ¬μ©μμ ννΈλκ° μ½κ² μ°λλ μ μλλ‘ μ§μν©λλ€. |
| 30 | +
|
| 31 | +- μ¨λ³΄λ© κ³Όμ μμ μ¬μ©μλ ννΈλμ 곡μ ν μ μλ 컀μ€ν
**URL**μ μμ±ν μ μμ΅λλ€. |
| 32 | +- ννΈλλ μ΄ URLμ ν΄λ¦ν΄ κ°νΈνκ² μ°λ μ μ°¨λ₯Ό μμνλ©°, μ°λμ΄ μλ£λλ©΄ λ μ¬μ©μλ **κ°μ μΊλ¦°λλ₯Ό 곡μ **νκ² λ©λλ€. |
| 33 | +- μ΄μ λ μ¬μ©μλ κ°μμ μν μ λ°λΌ λ€μκ³Ό κ°μ κΈ°λ‘μ ν¨κ» λ¨κΈ°κ³ μ΄μ€ νΌμμ μ€μ²ν μ μμ΅λλ€: |
| 34 | + |
| 35 | + - νΌμμ½ λ³΅μ© |
| 36 | + - κ°μ κΈ°λ‘ |
| 37 | + - κ΄κ³ μ¬λΆ |
| 38 | + - μ½λ μ¬μ© μ¬λΆ |
| 39 | + |
| 40 | + |
| 41 | +### π
μΊλ¦°λ κΈ°λ₯ |
9 | 42 |
|
| 43 | +> ννΈλμ μ¬μ©μκ° κ°μ μΊλ¦°λλ₯Ό 곡μ νμ¬ ν¨κ» κΈ°λ‘μ μμ±ν μ μμ΅λλ€. |
| 44 | +
|
| 45 | +- μΉ΄μΉ΄μ€ κ³΅μ APIλ₯Ό ν΅ν΄ μ°κ²°λ μ¬μ©μμ ννΈλλ νλμ μΊλ¦°λμμ μλμ κ°μ κΈ°λ‘μ ν¨κ» μμ±ν©λλ€: |
| 46 | + |
| 47 | + - **νΌμμ½ λ³΅μ© κΈ°λ‘** |
| 48 | + - **κ°μ κΈ°λ‘** |
| 49 | + - **κ΄κ³ μ¬λΆ** |
| 50 | + - **μ½λ μ¬μ© μ¬λΆ** |
| 51 | + |
| 52 | +- μ¬μ©μμ **`role` κ°**(`ROLE_USER`, `ROLE_PARTNER`)μ λ°λΌ κΈ°λ‘ κ°λ₯ν νλͺ©κ³Ό μ κ·Ό κΆνμ΄ λ€λ¦
λλ€. |
| 53 | + |
| 54 | + - **μ¬μ±(ROLE_USER):** κ΄κ³ μ¬λΆ, νΌμμ½ λ³΅μ© μ¬λΆ, κ°μ κΈ°λ‘ |
| 55 | + - **λ¨μ±(ROLE_PARTNER):** κ΄κ³ μ¬λΆ, μ½λ μ¬μ© μ¬λΆ |
| 56 | + |
| 57 | +### π μλ¦Ό κΈ°λ₯ |
| 58 | + |
| 59 | +> μμ€ν
λ° μ°λλ μ¬μ©μμμ μνΈμμ©μ μλ¦Ό μ€νμΌλ‘ μ 곡ν©λλ€. |
| 60 | +
|
| 61 | +- **SseEmitter**λ₯Ό νμ©ν **SSE(Server-Sent Events)**λ₯Ό ν΅ν΄ μ€μκ° μλ¦Όμ μ μ‘ν©λλ€. |
| 62 | +- μ¬μ©μλ λ€μκ³Ό κ°μ μλ¦Όμ μ€μκ°μΌλ‘ λ°μ μ μμ΅λλ€: |
| 63 | + |
| 64 | + - νΌμμ½ **λ³΅μ© μλ¦Ό** |
| 65 | + - **κ°μ κΈ°λ‘ μλ¦Ό** |
| 66 | + - **μ½ κ΅¬λ§€ μλ¦Ό** |
| 67 | + - **ννΈλ μ°λ μλ½ μλ¦Ό** |
| 68 | + |
| 69 | +--- |
10 | 70 |
|
11 | 71 | ## β¨ Contributors |
12 | 72 |
|
|
47 | 107 | [](https://skillicons.dev) |
48 | 108 |
|
49 | 109 | --- |
50 | | -## π Folder Structure |
| 110 | +<details> |
| 111 | +<summary> <h2>π Fold er Structure</h2></summary> |
| 112 | + <div markdown="1"> |
| 113 | +<h3>λλ©μΈ μ€μ¬ ꡬ쑰 μ€κ³(DDD ꡬ쑰)</h3> |
| 114 | + |
| 115 | +``` |
| 116 | +βββ java |
| 117 | +βΒ Β βββ com |
| 118 | +βΒ Β βββ together |
| 119 | +βΒ Β βββ backend |
| 120 | +βΒ Β βββ ToGetHerApplication.java |
| 121 | +βΒ Β βββ domain |
| 122 | +βΒ Β βΒ Β βββ calendar |
| 123 | +βΒ Β βΒ Β βΒ Β βββ controller |
| 124 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ CalendarController.java |
| 125 | +βΒ Β βΒ Β βΒ Β βββ dto |
| 126 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ CalendarDetailResponse.java |
| 127 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ CalendarRecordRequest.java |
| 128 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ CalendarRecordResponse.java |
| 129 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ CalendarSummaryResponse.java |
| 130 | +βΒ Β βΒ Β βΒ Β βββ model |
| 131 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ entity |
| 132 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ BasicRecord.java |
| 133 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ CondomUsage.java |
| 134 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ IntakeRecord.java |
| 135 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ IntakeType.java |
| 136 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ MoodType.java |
| 137 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ RelationRecord.java |
| 138 | +βΒ Β βΒ Β βΒ Β βββ repository |
| 139 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ BasicRecordRepository.java |
| 140 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ IntakeRecordRepository.java |
| 141 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ RelationRecordRepository.java |
| 142 | +βΒ Β βΒ Β βΒ Β βββ service |
| 143 | +βΒ Β βΒ Β βΒ Β βββ CalendarService.java |
| 144 | +βΒ Β βΒ Β βΒ Β βββ IntakeRecordInitService.java |
| 145 | +βΒ Β βΒ Β βββ couple |
| 146 | +βΒ Β βΒ Β βΒ Β βββ controller |
| 147 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ CoupleController.java |
| 148 | +βΒ Β βΒ Β βΒ Β βββ model |
| 149 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ entity |
| 150 | +βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ Couple.java |
| 151 | +βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ CoupleStatus.java |
| 152 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ request |
| 153 | +βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ ConnectRequest.java |
| 154 | +βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ CoupleRequest.java |
| 155 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ response |
| 156 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ ConnectResponse.java |
| 157 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ CoupleResponse.java |
| 158 | +βΒ Β βΒ Β βΒ Β βββ repository |
| 159 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ CoupleRepository.java |
| 160 | +βΒ Β βΒ Β βΒ Β βββ service |
| 161 | +βΒ Β βΒ Β βΒ Β βββ CoupleService.java |
| 162 | +βΒ Β βΒ Β βββ notification |
| 163 | +βΒ Β βΒ Β βΒ Β βββ controller |
| 164 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationSettingsController.java |
| 165 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationSseController.java |
| 166 | +βΒ Β βΒ Β βΒ Β βββ model |
| 167 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ Notification.java |
| 168 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationSettings.java |
| 169 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationType.java |
| 170 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ intake |
| 171 | +βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ request |
| 172 | +βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ IntakeRequest.java |
| 173 | +βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ response |
| 174 | +βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ IntakeResponse.java |
| 175 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ notification |
| 176 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ request |
| 177 | +βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationDayRequest.java |
| 178 | +βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationEnabledRequest.java |
| 179 | +βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationTimeRequest.java |
| 180 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ response |
| 181 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationDayResponse.java |
| 182 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationEnabledResponse.java |
| 183 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationTimeResponse.java |
| 184 | +βΒ Β βΒ Β βΒ Β βββ repository |
| 185 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationRepository.java |
| 186 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationSettingsRepository.java |
| 187 | +βΒ Β βΒ Β βΒ Β βββ service |
| 188 | +βΒ Β βΒ Β βΒ Β βββ NotificationService.java |
| 189 | +βΒ Β βΒ Β βΒ Β βββ NotificationSettingsService.java |
| 190 | +βΒ Β βΒ Β βΒ Β βββ NotificationSseService.java |
| 191 | +βΒ Β βΒ Β βββ pill |
| 192 | +βΒ Β βΒ Β βΒ Β βββ controller |
| 193 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ UserPillController.java |
| 194 | +βΒ Β βΒ Β βΒ Β βββ model |
| 195 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ IntakeInfo.java |
| 196 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ IntakeOption.java |
| 197 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ UserPill.java |
| 198 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ request |
| 199 | +βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ UserPillRequest.java |
| 200 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ response |
| 201 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ TodayPillResponse.java |
| 202 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ UserPillRemainResponse.java |
| 203 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ UserPillResponse.java |
| 204 | +βΒ Β βΒ Β βΒ Β βββ repository |
| 205 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ IntakeInfoRepository.java |
| 206 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ UserPillRepository.java |
| 207 | +βΒ Β βΒ Β βΒ Β βββ service |
| 208 | +βΒ Β βΒ Β βΒ Β βββ UserPillService.java |
| 209 | +βΒ Β βΒ Β βββ sharing |
| 210 | +βΒ Β βΒ Β βΒ Β βββ controller |
| 211 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ SharingController.java |
| 212 | +βΒ Β βΒ Β βΒ Β βββ model |
| 213 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ Sharing.java |
| 214 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ request |
| 215 | +βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ ConfirmRequest.java |
| 216 | +βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ SaveUrlRequest.java |
| 217 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ response |
| 218 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ ConfirmResponse.java |
| 219 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ SaveUrlResponse.java |
| 220 | +βΒ Β βΒ Β βΒ Β βββ repository |
| 221 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ SharingRepository.java |
| 222 | +βΒ Β βΒ Β βΒ Β βββ service |
| 223 | +βΒ Β βΒ Β βΒ Β βββ SharingService.java |
| 224 | +βΒ Β βΒ Β βββ user |
| 225 | +βΒ Β βΒ Β βββ controller |
| 226 | +βΒ Β βΒ Β βΒ Β βββ MainPageController.java |
| 227 | +βΒ Β βΒ Β βΒ Β βββ UserAuthController.java |
| 228 | +βΒ Β βΒ Β βΒ Β βββ UserController.java |
| 229 | +βΒ Β βΒ Β βΒ Β βββ UserRedirectionController.java |
| 230 | +βΒ Β βΒ Β βββ model |
| 231 | +βΒ Β βΒ Β βΒ Β βββ entity |
| 232 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ Role.java |
| 233 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ User.java |
| 234 | +βΒ Β βΒ Β βΒ Β βββ request |
| 235 | +βΒ Β βΒ Β βΒ Β βΒ Β βββ UserRequest.java |
| 236 | +βΒ Β βΒ Β βΒ Β βββ response |
| 237 | +βΒ Β βΒ Β βΒ Β βββ MyPageResponse.java |
| 238 | +βΒ Β βΒ Β βΒ Β βββ UserResponse.java |
| 239 | +βΒ Β βΒ Β βΒ Β βββ mainpageinfo |
| 240 | +βΒ Β βΒ Β βΒ Β βββ PartnerInfoResponse.java |
| 241 | +βΒ Β βΒ Β βΒ Β βββ PillInfoResponse.java |
| 242 | +βΒ Β βΒ Β βΒ Β βββ UserInfoResponse.java |
| 243 | +βΒ Β βΒ Β βββ repository |
| 244 | +βΒ Β βΒ Β βΒ Β βββ UserRepository.java |
| 245 | +βΒ Β βΒ Β βββ service |
| 246 | +βΒ Β βΒ Β βββ MainPageService.java |
| 247 | +βΒ Β βΒ Β βββ UserAuthService.java |
| 248 | +βΒ Β βΒ Β βββ UserDeleteService.java |
| 249 | +βΒ Β βΒ Β βββ UserProfileService.java |
| 250 | +βΒ Β βββ global |
| 251 | +βΒ Β βββ common |
| 252 | +βΒ Β βΒ Β βββ BaseResponse.java |
| 253 | +βΒ Β βΒ Β βββ BaseResponseStatus.java |
| 254 | +βΒ Β βΒ Β βββ model |
| 255 | +βΒ Β βΒ Β βββ BaseEntity.java |
| 256 | +βΒ Β βββ config |
| 257 | +βΒ Β βΒ Β βββ CorsMvcConfig.java |
| 258 | +βΒ Β βΒ Β βββ RedisConfig.java |
| 259 | +βΒ Β βΒ Β βββ SecurityConfig.java |
| 260 | +βΒ Β βββ security |
| 261 | +βΒ Β βββ jwt |
| 262 | +βΒ Β βΒ Β βββ JWTFilter.java |
| 263 | +βΒ Β βΒ Β βββ model |
| 264 | +βΒ Β βΒ Β βΒ Β βββ BlackListToken.java |
| 265 | +βΒ Β βΒ Β βΒ Β βββ RefreshToken.java |
| 266 | +βΒ Β βΒ Β βββ service |
| 267 | +βΒ Β βΒ Β βΒ Β βββ BlackListTokenService.java |
| 268 | +βΒ Β βΒ Β βΒ Β βββ JwtTokenService.java |
| 269 | +βΒ Β βΒ Β βββ util |
| 270 | +βΒ Β βΒ Β βββ CookieUtil.java |
| 271 | +βΒ Β βΒ Β βββ JWTUtil.java |
| 272 | +βΒ Β βββ oauth2 |
| 273 | +βΒ Β βββ CustomOAuth2UserService.java |
| 274 | +βΒ Β βββ CustomSuccessHandler.java |
| 275 | +βΒ Β βββ dto |
| 276 | +βΒ Β βββ CustomOAuth2User.java |
| 277 | +βΒ Β βββ KakaoResponse.java |
| 278 | +βΒ Β βββ OAuth2Response.java |
| 279 | +βΒ Β βββ UserDTO.java |
| 280 | +βββ resources |
| 281 | + βββ application-dev.yml |
| 282 | + βββ application-prod.yml |
| 283 | + βββ application.yml |
| 284 | +``` |
| 285 | +</div> |
| 286 | +</details> |
| 287 | + |
| 288 | + |
51 | 289 |
|
0 commit comments