diff --git a/src/main/java/org/cotato/csquiz/api/mypage/controller/MyPageController.java b/src/main/java/org/cotato/csquiz/api/mypage/controller/MyPageController.java index abfa28c8..a0b3b43c 100644 --- a/src/main/java/org/cotato/csquiz/api/mypage/controller/MyPageController.java +++ b/src/main/java/org/cotato/csquiz/api/mypage/controller/MyPageController.java @@ -1,13 +1,12 @@ package org.cotato.csquiz.api.mypage.controller; import org.cotato.csquiz.api.mypage.dto.HallOfFameResponse; -import org.cotato.csquiz.common.config.jwt.JwtTokenProvider; import org.cotato.csquiz.domain.education.service.MyPageService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; +import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -19,13 +18,10 @@ public class MyPageController { private final MyPageService myPageService; - private final JwtTokenProvider jwtTokenProvider; @GetMapping("/hall-of-fame") public ResponseEntity findHallOfFame(@RequestParam("generationId") Long generationId, - @RequestHeader("Authorization") String authorizationHeader) { - String accessToken = jwtTokenProvider.getBearer(authorizationHeader); - - return ResponseEntity.ok(myPageService.findHallOfFame(generationId, jwtTokenProvider.getMemberId(accessToken))); + @AuthenticationPrincipal Long memberId) { + return ResponseEntity.ok(myPageService.findHallOfFame(generationId, memberId)); } } diff --git a/src/main/java/org/cotato/csquiz/domain/auth/entity/Member.java b/src/main/java/org/cotato/csquiz/domain/auth/entity/Member.java index 0af96356..28bc4206 100644 --- a/src/main/java/org/cotato/csquiz/domain/auth/entity/Member.java +++ b/src/main/java/org/cotato/csquiz/domain/auth/entity/Member.java @@ -59,6 +59,12 @@ public class Member extends BaseTimeEntity { @Column(name = "member_profile_image") private S3Info profileImage; + @Column(name = "introduction", columnDefinition = "TEXT") + private String introduction; + + @Column(name = "university") + private String university; + @Builder public Member(String email, String password, String name, String phoneNumber) { this.email = email; @@ -90,4 +96,12 @@ public void updatePosition(MemberPosition position) { public void updateProfileImage(S3Info s3Info) { this.profileImage = s3Info; } + + public void updateIntroduction(String introduction) { + this.introduction = introduction; + } + + public void updateUniversity(String university) { + this.university = university; + } } diff --git a/src/main/java/org/cotato/csquiz/domain/auth/entity/ProfileLink.java b/src/main/java/org/cotato/csquiz/domain/auth/entity/ProfileLink.java new file mode 100644 index 00000000..e48c9c7c --- /dev/null +++ b/src/main/java/org/cotato/csquiz/domain/auth/entity/ProfileLink.java @@ -0,0 +1,37 @@ +package org.cotato.csquiz.domain.auth.entity; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.cotato.csquiz.common.entity.BaseTimeEntity; +import org.cotato.csquiz.domain.auth.enums.LinkType; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class ProfileLink extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "link_id") + private Long id; + + @Column(name = "type", nullable = false) + @Enumerated(EnumType.STRING) + private LinkType role; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "member_id", nullable = false) + private Member member; +} diff --git a/src/main/java/org/cotato/csquiz/domain/auth/enums/LinkType.java b/src/main/java/org/cotato/csquiz/domain/auth/enums/LinkType.java new file mode 100644 index 00000000..afdfd98f --- /dev/null +++ b/src/main/java/org/cotato/csquiz/domain/auth/enums/LinkType.java @@ -0,0 +1,16 @@ +package org.cotato.csquiz.domain.auth.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum LinkType { + GITHUB("깃허브"), + BEHANCE("비핸스"), + BLOG("블로그"), + OTHER("기타"), + ; + + private final String description; +} diff --git a/src/main/java/org/cotato/csquiz/domain/auth/repository/ProfileLinkRepository.java b/src/main/java/org/cotato/csquiz/domain/auth/repository/ProfileLinkRepository.java new file mode 100644 index 00000000..5bf939f3 --- /dev/null +++ b/src/main/java/org/cotato/csquiz/domain/auth/repository/ProfileLinkRepository.java @@ -0,0 +1,7 @@ +package org.cotato.csquiz.domain.auth.repository; + +import org.cotato.csquiz.domain.auth.entity.ProfileLink; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ProfileLinkRepository extends JpaRepository { +} diff --git a/src/main/java/org/cotato/csquiz/domain/auth/service/MemberProfileService.java b/src/main/java/org/cotato/csquiz/domain/auth/service/MemberProfileService.java new file mode 100644 index 00000000..e1b16c1e --- /dev/null +++ b/src/main/java/org/cotato/csquiz/domain/auth/service/MemberProfileService.java @@ -0,0 +1,13 @@ +package org.cotato.csquiz.domain.auth.service; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Slf4j +@Service +@Transactional(readOnly = true) +@RequiredArgsConstructor +public class MemberProfileService { +}