Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
4c4a514
Feat(commission): 외주 도메인 관련 Entities, Enums, Repositories 추가
Jong0128 May 28, 2026
8256e0a
Feat(term): 결제 약관 Entity and Repository 추가
Jong0128 May 28, 2026
72108a7
Feat(payment): 결제 관련 Entity, Enum, Repository 추가
Jong0128 May 28, 2026
2227762
Feat(commission): 외주 지원 관련 Entities, Enums, Repositories 추가
Jong0128 May 28, 2026
99b2fca
Feat(commission): 외주 수정 관련 Entities, Enums, Repositories 추가
Jong0128 May 28, 2026
d77c546
Chore(commission): 파일 끝에 줄바꿈 추가
Jong0128 May 28, 2026
6edcd96
Refactor(commission): enum 및 변수명 리네이밍
Jong0128 May 28, 2026
437d31b
Feat(commission): DB 유니크 제약 추가
Jong0128 May 28, 2026
30d0340
Feat(commission): 에러 코드 추가 및 도메인 함수 검증 로직 추가
Jong0128 May 28, 2026
9b399a2
Feat(payment): 빌더 함수 수정
Jong0128 May 28, 2026
bc3a746
Refactor(commission): Factory Method 예외 처리 제거. 추후 api 개발 시 수정 필요
Jong0128 May 28, 2026
d33b4eb
Fix(commission): Size Enum 변경 (B6 -> KUKBAE(국배판))
Jong0128 May 28, 2026
998153a
Rename(commission): Enum 파일명 변경
Jong0128 May 28, 2026
d513aba
Rename(commission): 외주 관련 도메인 파일명 변경
Jong0128 May 28, 2026
1ad8aa0
Refactor(commission): 지원 파일 제거 및 ERD에 맞게 Entity 수정
Jong0128 May 28, 2026
b36e5c1
Refactor(commission): 수정 회차 관리 구조 개선 및 리뷰 반영
Jong0128 Jun 1, 2026
b4ce609
Merge pull request #22 from Ditda-Official/feat/#18-commission-relate…
Jong0128 Jun 1, 2026
80ebc02
Feat(designer): 디자이너 회원가입 포트폴리오 업로드를 presigned URL 방식으로 변경
fervovita Jun 1, 2026
16a6df4
Feat(s3): 포트폴리오 업로드를 임시(tmp) 저장 후 가입 완료시 승격하도록 변경
fervovita Jun 1, 2026
71b21ed
Docs(designer): 포트폴리오 key 예시에 임시(tmp) 경로 반영
fervovita Jun 1, 2026
66c6794
Docs(designer): 포트폴리오 key와 presigned URL 예시에 임시(tmp) 경로 반영
fervovita Jun 1, 2026
6fa5983
Refactor(security): 회원가입 permitAll 경로를 명시적 경로로 변경
fervovita Jun 1, 2026
4b31bc4
Merge pull request #31 from Ditda-Official/feat/#29-portfolio-presigned
fervovita Jun 2, 2026
7789767
Refactor: 도메인 패키지 구조 개편 및 인증 로직 통합
Jong0128 Jun 2, 2026
f9c6c43
Feat(commission): 플랜 조회 API 추가
Jong0128 Jun 2, 2026
e6e5f9b
Rename(commission): Enum 파일명 변경
Jong0128 Jun 2, 2026
07c70f8
Feat(Term): 결제 약관 타입 추가 (Settlement)
Jong0128 Jun 2, 2026
7c046a5
Refactor: 포트폴리오 로직을 auth에서 designer 도메인으로 이동
fervovita Jun 2, 2026
efe3fff
Feat(commission): 새 외주 작성 요청 및 응답 DTO 정의
Jong0128 Jun 2, 2026
2401297
Refactor: Textbook 도메인을 category/textbook으로 이동
fervovita Jun 2, 2026
7c6c5f8
refactor(s3): content-type 매핑을 S3ContentType enum으로 추출
Jong0128 Jun 2, 2026
559d569
feat(commission): 새 외주 첨부파일 업로드 서비스 추가
Jong0128 Jun 2, 2026
63ddafa
Refactor(designer): PortfolioErrorCode를 DesignerErrorCode로 변경
fervovita Jun 2, 2026
98073b3
Merge pull request #33 from Ditda-Official/enhancement/#32-folder-arc…
Jong0128 Jun 3, 2026
95dcf4b
Merge remote-tracking branch 'origin/dev' into feat/#30-new-commissio…
Jong0128 Jun 3, 2026
bb7d318
Chore: 파일 끝에 줄바꿈 추가 및 import 문 순서 조정
Jong0128 Jun 4, 2026
c089012
Refactor(designer): 포트폴리오 허용 파일 타입을 S3ContentType enum으로 정리
Jong0128 Jun 4, 2026
b421665
Feat(payment): 외주 결제 대기(PENDING) 생성 서비스 추가
Jong0128 Jun 4, 2026
8a0dfa7
Feat(commission): 외주 생성 요청 DTO·에러코드·첨부파일 정책 보강
Jong0128 Jun 4, 2026
5885424
Feat(commission): 카테고리별 처리 전략(Handler) 구조 추가
Jong0128 Jun 4, 2026
cff553f
Feat(commission): 외주 첨부파일 presign·검증·저장 서비스 보강
Jong0128 Jun 4, 2026
1b04342
Feat(commission): 새 외주 생성 API 엔드포인트 구현
Jong0128 Jun 4, 2026
7fa6d9c
Refactor(commission): 외주 생성 검증 로직 분리 및 첨부파일 합산 검증 보강
Jong0128 Jun 4, 2026
b889fd0
Refactor(commission): 외주 생성 train-wreck 제거
Jong0128 Jun 4, 2026
8c2ea24
Refactor(commission): 색상 구성 오류 에러코드 분리
Jong0128 Jun 4, 2026
40dfd69
Refactor(commission): 플랜 조회 트랜잭션 제거 및 API 경로 정정
Jong0128 Jun 4, 2026
ca57db2
Chore(Commission): 줄 길이 및 import 문 순서 조정
Jong0128 Jun 4, 2026
11f457b
Refactor: 강사 조회 예외 처리 추가 및 적용
Jong0128 Jun 4, 2026
8121896
Fix(auth): @MapsId 엔티티 회원가입 저장 누락 수정
Jong0128 Jun 4, 2026
7fc7c39
Feat: 입금 이메일 API 구현
Jong0128 Jun 4, 2026
10632c9
Fix(payment): NPE 처리
Jong0128 Jun 4, 2026
5de7a9c
Fix: 예외 처리 개선 및 중복 입금 알림 검증 추가
Jong0128 Jun 4, 2026
b6a04b7
Chore(Payment): 들여쓰기 조정
Jong0128 Jun 4, 2026
514a8aa
Refactor(term): 결제 약관 에러코드 TermErrorCode로 통합
Jong0128 Jun 6, 2026
3607bce
Refactor(commission): 강사 조회를 InstructorService로 분리
Jong0128 Jun 6, 2026
76bdc74
Refactor(payment): 결제 약관 저장을 TermService로 처리
Jong0128 Jun 6, 2026
3dee3a9
Rename(commission): CommissionFileToSave vo -> dto 이동
Jong0128 Jun 8, 2026
445cae7
Chore(commission): import문 정렬
Jong0128 Jun 8, 2026
2e444c7
Merge pull request #34 from Ditda-Official/feat/#30-new-commission-api
Jong0128 Jun 8, 2026
bbf3a4c
Feature(commission): 강사 1차 시안 목록 조회 API 추가
Jong0128 Jun 14, 2026
6711a05
Feature(commission): 시안 상세 조회 API 추가
Jong0128 Jun 15, 2026
d8ea737
Feature(s3): S3 URL 생성 로직에 에러코드 및 핸들링 추가
Jong0128 Jun 15, 2026
78e99dc
Fix(commission): 시안 파일 key -> URL 반환 로직 추가
Jong0128 Jun 15, 2026
2a4c96d
Feature(commission): 1차 시안 워터마크 상태 처리 로직 추가 및 응답 확장
Jong0128 Jun 15, 2026
46045a5
Chore(commission): 빈줄 추가
Jong0128 Jun 15, 2026
2a0aef6
Refactor(commission): 시안 조회 도메인 위임 및 URL 검증 보강
Jong0128 Jun 15, 2026
c27c6d1
Rename(commission): DraftQueryService -> DraftService 이름 변경
Jong0128 Jun 15, 2026
db25484
Feature(designer): 디자이너 경험치/레벨업 처리 추가
Jong0128 Jun 15, 2026
02af743
Feature(commission): 1차 시안 선택 API 추가
Jong0128 Jun 15, 2026
d5fed79
Refactor(commission): 미사용 팩토리함수 제거
Jong0128 Jun 15, 2026
f66285b
Refactor(commission): 시안 응답 변환 및 presign을 DraftResponseMapper로 분리
Jong0128 Jun 15, 2026
81845e0
Rename(payment): PaymentErrorCode 오타 수정
Jong0128 Jun 15, 2026
a17afdf
Fix(commission): 빈 1차 시안 핸들링
Jong0128 Jun 15, 2026
5891fc1
Refactor(s3): presigned Url 로그 추가
Jong0128 Jun 15, 2026
801577f
Refactor(commission): Commission 도메인을 강사 전용으로 변경
fervovita Jun 17, 2026
dcf1480
Feat(application): ApplicationStatus enum 확장 및 관련 로직변경
fervovita Jun 17, 2026
e67f129
Merge branch 'feat/#35-draft-select' into feat/#37-comission-dashboard
fervovita Jun 17, 2026
dff1f25
Refactor(commission): 시안 선택 facade 및 도메인 서비스 분리
Jong0128 Jun 17, 2026
afeaf94
Refactor(commission): DraftService mapper 모든 책임 위임
Jong0128 Jun 17, 2026
498a68a
Refactor: 동시성 처리 및 낙관적 락 관련 로직 제거, 레벨업 로직 수정
Jong0128 Jun 17, 2026
9ffef4c
Fix(commission): 워터마크 파일 URL 생성 불가 에러코드 수정
Jong0128 Jun 17, 2026
727d7a9
Refactor(commission): 가시성을 위한 @Query 변경
Jong0128 Jun 17, 2026
08f6ced
Refactor(commission): 미사용 함수 제거
Jong0128 Jun 17, 2026
a3f07d3
Feat(dashboard): 강사 시안 제출 현황 조회 기능 추가
fervovita Jun 17, 2026
a7aa83a
Fix(commission): 시안 상세 조회 및 1차 시안 지원 선택 제약조건 추가 (인원 + 마감일)
Jong0128 Jun 18, 2026
382f6d0
Merge pull request #38 from Ditda-Official/feat/#35-draft-select
Jong0128 Jun 18, 2026
afff17a
Feat(dashboard): 매칭 중인 외주 조회 기능 추가
fervovita Jun 18, 2026
02cc644
Test(dashboard): 매칭 중인 외주 조회 기능 테스트 추가
fervovita Jun 18, 2026
62fd473
Merge branch 'dev' into feat/#37-comission-dashboard
fervovita Jun 18, 2026
433a8c4
Style: 후행 공백 제거
fervovita Jun 18, 2026
dfe44c0
Feat(dashboard): 수정 중인 외주 조회 기능 추가
fervovita Jun 18, 2026
181ccc3
Refactor(dashboard): 시안 제출 현황 조회 DTO의 from 메서드를 private으로 변경
fervovita Jun 18, 2026
b3fa8c1
Refactor(dashboard): isViewable 계산을 DTO에서 서비스 계층으로 이동
fervovita Jun 18, 2026
29c2812
Fix(dashboard): 매칭 중인 외주 응답 필드명 오류 수정
fervovita Jun 18, 2026
80cd326
Feat(dashboard): 강사 외주 조회에 정렬 기능 추가
fervovita Jun 18, 2026
e18f87f
Fix: 강사 외주 조회 테스트에 정렬 조건 추가
fervovita Jun 18, 2026
8b3df67
Fix(application): 외주 집계 메서드에 distinct 방어 코드 추가
fervovita Jun 18, 2026
5f23b77
Chore(dashboard): 주석 수정
fervovita Jun 18, 2026
fb106dd
Refactor: Commission presigned URL API를 공용 API로 이동
Jong0128 Jun 19, 2026
e19a612
Fix(dashboard): 매칭 외주 응답 필드명 오타 수정
fervovita Jun 19, 2026
006c59d
Refactor(dashboard): 강사 대시보드 API base path를 /dashboards로 변경
fervovita Jun 19, 2026
46666dc
Refactor: 파일 키 검증을 S3FileService로 공용화하고 commission 적용
Jong0128 Jun 19, 2026
e8539a0
Refactor(designer): 포트폴리오 presign/검증을 공용 S3FileService로 적용
Jong0128 Jun 19, 2026
47b7856
Fix(s3): 업로드 정책 불변화 및 키 검증 null 가드
Jong0128 Jun 19, 2026
f13f997
Refactor(dashboard): 강사 대시보드 조회를 단일 JOIN 쿼리로 통합
fervovita Jun 19, 2026
c16415d
Refactor(dashboard): JOIN 통합 이후 미사용 코드 제거
fervovita Jun 19, 2026
d362da8
Fix(dashboard): 외주 조회 쿼리 파라미터 변수명 오류 수정
fervovita Jun 19, 2026
49c9b52
Merge pull request #40 from Ditda-Official/feat/#37-comission-dashboard
fervovita Jun 20, 2026
7609c07
Feat: JWT 기반 강사 및 디자이너 역할 인가 기능 구현
fervovita Jun 20, 2026
3242fac
Refactor(s3): 패키지 폴더 구조 생성 및 S3ErrorCode 분리
Jong0128 Jun 21, 2026
0c028cd
#36 -> dev merge
Jong0128 Jun 21, 2026
e3ea69a
Merge pull request #42 from Ditda-Official/refactor/#36-presigned-url…
Jong0128 Jun 21, 2026
5c1d48e
Merge pull request #43 from Ditda-Official/feat/#41-role-based-author…
fervovita Jun 21, 2026
5997366
Feat(auth): 로그인/회원가입 응답에 userType 필드 추가
fervovita Jun 21, 2026
0d20ce0
Merge pull request #46 from Ditda-Official/feat/#45-auth-user-type
fervovita Jun 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ditda.backend.domain.common.auth.controller;
package ditda.backend.domain.auth.controller;

import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.CookieValue;
Expand All @@ -7,16 +7,16 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import ditda.backend.domain.common.auth.dto.AuthResult;
import ditda.backend.domain.common.auth.dto.TokenResult;
import ditda.backend.domain.common.auth.dto.request.CheckUsernameRequest;
import ditda.backend.domain.common.auth.dto.request.EmailCodeVerificationRequest;
import ditda.backend.domain.common.auth.dto.request.EmailVerificationRequest;
import ditda.backend.domain.common.auth.dto.request.LoginRequest;
import ditda.backend.domain.common.auth.dto.response.LoginResponse;
import ditda.backend.domain.common.auth.dto.response.ReissueResponse;
import ditda.backend.domain.common.auth.facade.AuthFacade;
import ditda.backend.domain.common.auth.mapper.AuthResponseMapper;
import ditda.backend.domain.auth.dto.AuthResult;
import ditda.backend.domain.auth.dto.TokenResult;
import ditda.backend.domain.auth.dto.request.CheckUsernameRequest;
import ditda.backend.domain.auth.dto.request.EmailCodeVerificationRequest;
import ditda.backend.domain.auth.dto.request.EmailVerificationRequest;
import ditda.backend.domain.auth.dto.request.LoginRequest;
import ditda.backend.domain.auth.dto.response.LoginResponse;
import ditda.backend.domain.auth.dto.response.ReissueResponse;
import ditda.backend.domain.auth.facade.AuthFacade;
import ditda.backend.domain.auth.mapper.AuthResponseMapper;
import ditda.backend.global.apipayload.response.ApiResponse;
import ditda.backend.global.jwt.utils.CookieUtils;
import io.swagger.v3.oas.annotations.Operation;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package ditda.backend.domain.auth.controller;

import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import ditda.backend.domain.auth.dto.AuthResult;
import ditda.backend.domain.auth.dto.request.DesignerSignupRequest;
import ditda.backend.domain.auth.dto.request.PortfolioPresignRequest;
import ditda.backend.domain.auth.dto.response.PortfolioPresignResponse;
import ditda.backend.domain.auth.dto.response.SignupResponse;
import ditda.backend.domain.auth.facade.DesignerAuthFacade;
import ditda.backend.domain.auth.mapper.AuthResponseMapper;
import ditda.backend.global.apipayload.response.ApiResponse;
import ditda.backend.global.jwt.utils.CookieUtils;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;

@RestController
@RequestMapping("/api/v1/designers/auth")
@RequiredArgsConstructor
@Tag(name = "Designer Auth", description = "디자이너 회원가입 API")
public class DesignerAuthController {

private final DesignerAuthFacade designerAuthFacade;
private final CookieUtils cookieUtils;
private final AuthResponseMapper authResponseMapper;

@Operation(
summary = "포트폴리오 업로드 URL 발급",
description = "**[회원가입]** 이메일 인증 완료 후, 포트폴리오 파일을 S3에 올릴 presigned PUT URL을 발급합니다. "
+ "PUT URL로 S3에 직접 업로드한 뒤, 응답의 key를 회원가입 요청의 portfolioKeys에 담아 전송합니다."
)
@PostMapping("/signup/portfolio/presigned-url")
public ApiResponse<PortfolioPresignResponse> issuePortfolioPresignedUrls(
@Valid @RequestBody PortfolioPresignRequest request
) {
PortfolioPresignResponse response = designerAuthFacade.issuePortfolioPresignedUrl(request);

return ApiResponse.onSuccess("포트폴리오 업로드 URL 발급 성공", response);
}

@Operation(
summary = "디자이너 회원가입",
description = "**[회원가입]** 회원가입 후 자동 로그인 처리됩니다. presigned PUT URL로 업로드한 포트폴리오 key를 portfolioKeys에 담아 전송합니다."
)
@PostMapping(value = "/signup")
public ApiResponse<SignupResponse> signup(
@Valid @RequestBody DesignerSignupRequest request,
HttpServletResponse response
) {
AuthResult result = designerAuthFacade.signup(request);

addRefreshTokenCookie(response, result.refreshToken());

return ApiResponse.onSuccess("디자이너 회원가입 성공", authResponseMapper.toSignupResponse(result));
}

private void addRefreshTokenCookie(HttpServletResponse response, String refreshToken) {
response.addHeader(HttpHeaders.SET_COOKIE, cookieUtils.createRefreshTokenCookie(refreshToken).toString());
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package ditda.backend.domain.instructor.auth.controller;
package ditda.backend.domain.auth.controller;

import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import ditda.backend.domain.instructor.auth.dto.InstructorAuthResult;
import ditda.backend.domain.instructor.auth.dto.request.InstructorSignupRequest;
import ditda.backend.domain.instructor.auth.dto.response.InstructorSignupResponse;
import ditda.backend.domain.instructor.auth.facade.InstructorAuthFacade;
import ditda.backend.domain.instructor.auth.mapper.InstructorAuthResponseMapper;
import ditda.backend.domain.auth.dto.AuthResult;
import ditda.backend.domain.auth.dto.request.InstructorSignupRequest;
import ditda.backend.domain.auth.dto.response.SignupResponse;
import ditda.backend.domain.auth.facade.InstructorAuthFacade;
import ditda.backend.domain.auth.mapper.AuthResponseMapper;
import ditda.backend.global.apipayload.response.ApiResponse;
import ditda.backend.global.jwt.utils.CookieUtils;
import io.swagger.v3.oas.annotations.Operation;
Expand All @@ -27,16 +27,16 @@ public class InstructorAuthController {

private final InstructorAuthFacade instructorAuthFacade;
private final CookieUtils cookieUtils;
private final InstructorAuthResponseMapper authResponseMapper;
private final AuthResponseMapper authResponseMapper;

@Operation(summary = "강사 회원가입", description = "**[회원가입]** 회원가입 후 자동 로그인 처리됩니다.")
@PostMapping("/signup")
public ApiResponse<InstructorSignupResponse> signup(
public ApiResponse<SignupResponse> signup(
@Valid @RequestBody InstructorSignupRequest request,
HttpServletResponse response
) {

InstructorAuthResult result = instructorAuthFacade.signup(request);
AuthResult result = instructorAuthFacade.signup(request);

addRefreshTokenCookie(response, result.refreshToken());

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package ditda.backend.domain.common.auth.dto;
package ditda.backend.domain.auth.dto;

import ditda.backend.domain.user.entity.enums.UserRole;

public record AuthResult(

Long userId,

UserRole userRole,

String name,

String profileImage,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ditda.backend.domain.common.auth.dto;
package ditda.backend.domain.auth.dto;

public record TokenResult(
String accessToken,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ditda.backend.domain.common.auth.dto.request;
package ditda.backend.domain.auth.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package ditda.backend.domain.designer.auth.dto.request;
package ditda.backend.domain.auth.dto.request;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonProperty;

import ditda.backend.domain.common.term.entity.enums.TermType;
import ditda.backend.domain.designer.auth.entity.enums.BankName;
import ditda.backend.domain.designer.entity.enums.BankName;
import ditda.backend.domain.term.entity.enums.TermType;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.Valid;
import jakarta.validation.constraints.Email;
Expand Down Expand Up @@ -84,7 +84,12 @@ public record DesignerSignupRequest(

@NotNull(message = "계좌 정보는 필수입니다")
@Valid
BankAccountRequest bankAccount
BankAccountRequest bankAccount,

@Schema(description = "presigned URL로 업로드한 포트폴리오 key 목록 (최대 3개)",
example = "[\"portfolio/tmp/3f2b....pdf\", \"portfolio/tmp/9a1c....png\"]")
@Size(max = 3, message = "포트폴리오 파일은 최대 3개까지 업로드 가능합니다.")
List<@NotBlank(message = "포트폴리오 key는 비어 있을 수 없습니다.") String> portfolioKeys
) {

public record TermRequest(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ditda.backend.domain.common.auth.dto.request;
package ditda.backend.domain.auth.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Email;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ditda.backend.domain.common.auth.dto.request;
package ditda.backend.domain.auth.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Email;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package ditda.backend.domain.instructor.auth.dto.request;
package ditda.backend.domain.auth.dto.request;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonProperty;

import ditda.backend.domain.common.term.entity.enums.TermType;
import ditda.backend.domain.term.entity.enums.TermType;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.Valid;
import jakarta.validation.constraints.Email;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ditda.backend.domain.common.auth.dto.request;
package ditda.backend.domain.auth.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package ditda.backend.domain.auth.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;

@Schema(description = "포트폴리오 presigned URL 발급 요청")
public record PortfolioPresignRequest(

@Schema(description = "인증 완료된 이메일", example = "testid@gmail.com")
@NotBlank(message = "이메일은 필수입니다.")
@Email(message = "올바른 이메일 형식이 아닙니다.")
String email,

@Schema(description = "파일 Content-Type", example = "application/pdf")
@NotBlank(message = "Content-Type은 필수입니다.")
String contentType
) {
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ditda.backend.domain.common.auth.dto.response;
package ditda.backend.domain.auth.dto.response;

import ditda.backend.domain.user.entity.enums.UserRole;
import io.swagger.v3.oas.annotations.media.Schema;

@Schema(description = "로그인 응답")
Expand All @@ -8,6 +9,9 @@ public record LoginResponse(
@Schema(description = "로그인 유저 ID", example = "1")
Long userId,

@Schema(description = "사용자 타입", example = "INSTRUCTOR")
UserRole userType,

@Schema(description = "사용자 이름", example = "홍길동")
String name,

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package ditda.backend.domain.auth.dto.response;

import io.swagger.v3.oas.annotations.media.Schema;

public record PortfolioPresignResponse(

@Schema(description = "S3 객체 key", example = "portfolio/tmp/5a5237a7-674a-47c2-91ca-6fdb28ba6b2d.pdf")
String key,

@Schema(description = "S3 직접 업로드용 presigned PUT URL", example = "https://{bucket}.s3.{region}.amazonaws.com/portfolio/tmp/{uuid}.pdf?X-Amz-Signature=...")
String presignedUrl
) {
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ditda.backend.domain.common.auth.dto.response;
package ditda.backend.domain.auth.dto.response;

import io.swagger.v3.oas.annotations.media.Schema;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
package ditda.backend.domain.designer.auth.dto.response;
package ditda.backend.domain.auth.dto.response;

import ditda.backend.domain.user.entity.enums.UserRole;
import io.swagger.v3.oas.annotations.media.Schema;

@Schema(description = "디자이너 회원가입 응답")
public record DesignerSignupResponse(
@Schema(description = "회원가입 응답")
public record SignupResponse(

@Schema(description = "User ID")
Long userId,

@Schema(description = "사용자 타입", example = "INSTRUCTOR")
UserRole userType,

@Schema(description = "사용자 이름", example = "홍길동")
String name,

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package ditda.backend.domain.common.auth.entity;
package ditda.backend.domain.auth.entity;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.time.LocalDateTime;

import ditda.backend.domain.common.user.entity.User;
import ditda.backend.domain.user.entity.User;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ditda.backend.domain.designer.auth.event;
package ditda.backend.domain.auth.event;

import java.util.List;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ditda.backend.domain.common.auth.exception;
package ditda.backend.domain.auth.exception;

import org.springframework.http.HttpStatus;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package ditda.backend.domain.common.auth.facade;
package ditda.backend.domain.auth.facade;

import org.springframework.stereotype.Component;

import ditda.backend.domain.common.auth.dto.AuthResult;
import ditda.backend.domain.common.auth.dto.TokenResult;
import ditda.backend.domain.common.auth.dto.request.LoginRequest;
import ditda.backend.domain.common.auth.notification.EmailVerificationMailer;
import ditda.backend.domain.common.auth.service.AuthService;
import ditda.backend.domain.common.auth.service.EmailVerificationService;
import ditda.backend.domain.common.user.service.UserService;
import ditda.backend.domain.auth.dto.AuthResult;
import ditda.backend.domain.auth.dto.TokenResult;
import ditda.backend.domain.auth.dto.request.LoginRequest;
import ditda.backend.domain.auth.notification.EmailVerificationMailer;
import ditda.backend.domain.auth.service.AuthService;
import ditda.backend.domain.auth.service.EmailVerificationService;
import ditda.backend.domain.user.service.UserService;
import lombok.RequiredArgsConstructor;

@Component
Expand Down
Loading