Skip to content

Commit 7c0e236

Browse files
committed
Docs: Swagger 문서 작성
1 parent 4a332e4 commit 7c0e236

File tree

1 file changed

+144
-0
lines changed

1 file changed

+144
-0
lines changed

src/main/java/com/back/domain/user/controller/UserControllerDocs.java

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.back.domain.user.controller;
22

3+
import com.back.domain.user.dto.ChangePasswordRequest;
34
import com.back.domain.user.dto.UpdateUserProfileRequest;
45
import com.back.domain.user.dto.UserDetailResponse;
56
import com.back.global.common.dto.RsData;
@@ -304,6 +305,149 @@ ResponseEntity<RsData<UserDetailResponse>> updateMyProfile(
304305
@Valid @RequestBody UpdateUserProfileRequest request
305306
);
306307

308+
@Operation(
309+
summary = "비밀번호 변경",
310+
description = "로그인한 사용자가 본인 계정의 비밀번호를 변경합니다. " +
311+
"현재 비밀번호를 검증하고, 새 비밀번호는 정책(최소 8자, 숫자/특수문자 포함)을 만족해야 합니다."
312+
)
313+
@ApiResponses({
314+
@ApiResponse(
315+
responseCode = "200",
316+
description = "비밀번호 변경 성공",
317+
content = @Content(
318+
mediaType = "application/json",
319+
examples = @ExampleObject(value = """
320+
{
321+
"success": true,
322+
"code": "SUCCESS_200",
323+
"message": "비밀번호가 변경되었습니다.",
324+
"data": null
325+
}
326+
""")
327+
)
328+
),
329+
@ApiResponse(
330+
responseCode = "400",
331+
description = "새 비밀번호 정책 위반",
332+
content = @Content(
333+
mediaType = "application/json",
334+
examples = @ExampleObject(value = """
335+
{
336+
"success": false,
337+
"code": "USER_005",
338+
"message": "비밀번호는 최소 8자 이상, 숫자/특수문자를 포함해야 합니다.",
339+
"data": null
340+
}
341+
""")
342+
)
343+
),
344+
@ApiResponse(
345+
responseCode = "403",
346+
description = "정지된 계정",
347+
content = @Content(
348+
mediaType = "application/json",
349+
examples = @ExampleObject(value = """
350+
{
351+
"success": false,
352+
"code": "USER_008",
353+
"message": "정지된 계정입니다. 관리자에게 문의하세요.",
354+
"data": null
355+
}
356+
""")
357+
)
358+
),
359+
@ApiResponse(
360+
responseCode = "410",
361+
description = "탈퇴한 계정",
362+
content = @Content(
363+
mediaType = "application/json",
364+
examples = @ExampleObject(value = """
365+
{
366+
"success": false,
367+
"code": "USER_009",
368+
"message": "탈퇴한 계정입니다.",
369+
"data": null
370+
}
371+
""")
372+
)
373+
),
374+
@ApiResponse(
375+
responseCode = "401",
376+
description = "인증 실패 (토큰 없음/잘못됨/만료 또는 현재 비밀번호 불일치)",
377+
content = @Content(
378+
mediaType = "application/json",
379+
examples = {
380+
@ExampleObject(name = "토큰 없음", value = """
381+
{
382+
"success": false,
383+
"code": "AUTH_001",
384+
"message": "인증이 필요합니다.",
385+
"data": null
386+
}
387+
"""),
388+
@ExampleObject(name = "잘못된 토큰", value = """
389+
{
390+
"success": false,
391+
"code": "AUTH_002",
392+
"message": "유효하지 않은 액세스 토큰입니다.",
393+
"data": null
394+
}
395+
"""),
396+
@ExampleObject(name = "만료된 토큰", value = """
397+
{
398+
"success": false,
399+
"code": "AUTH_004",
400+
"message": "만료된 액세스 토큰입니다.",
401+
"data": null
402+
}
403+
"""),
404+
@ExampleObject(name = "현재 비밀번호 불일치", value = """
405+
{
406+
"success": false,
407+
"code": "USER_006",
408+
"message": "아이디 또는 비밀번호가 올바르지 않습니다.",
409+
"data": null
410+
}
411+
""")
412+
}
413+
)
414+
),
415+
@ApiResponse(
416+
responseCode = "404",
417+
description = "존재하지 않는 사용자",
418+
content = @Content(
419+
mediaType = "application/json",
420+
examples = @ExampleObject(value = """
421+
{
422+
"success": false,
423+
"code": "USER_001",
424+
"message": "존재하지 않는 사용자입니다.",
425+
"data": null
426+
}
427+
""")
428+
)
429+
),
430+
@ApiResponse(
431+
responseCode = "500",
432+
description = "서버 내부 오류",
433+
content = @Content(
434+
mediaType = "application/json",
435+
examples = @ExampleObject(value = """
436+
{
437+
"success": false,
438+
"code": "COMMON_500",
439+
"message": "서버 오류가 발생했습니다.",
440+
"data": null
441+
}
442+
""")
443+
)
444+
)
445+
})
446+
ResponseEntity<RsData<Void>> changeMyPassword(
447+
@AuthenticationPrincipal CustomUserDetails user,
448+
@Valid @RequestBody ChangePasswordRequest request
449+
);
450+
307451
@Operation(
308452
summary = "내 계정 삭제",
309453
description = "로그인한 사용자의 계정을 탈퇴 처리합니다. " +

0 commit comments

Comments
 (0)