Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 7 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,13 @@ dependencies {
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.13'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-api:2.8.13'

implementation 'org.springframework.boot:spring-boot-starter-security'
testImplementation 'org.springframework.security:spring-security-test'
// Jwt
implementation 'io.jsonwebtoken:jjwt-api:0.12.3'
implementation 'io.jsonwebtoken:jjwt-impl:0.12.3'
implementation 'io.jsonwebtoken:jjwt-jackson:0.12.3'
implementation 'org.springframework.boot:spring-boot-configuration-processor'
implementation 'org.springframework.boot:spring-boot-starter-validation'
// QueryDSL : OpenFeign
implementation "io.github.openfeign.querydsl:querydsl-jpa:7.0"
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,7 @@ public class FoodCategory extends BaseEntity {
private String category; //음식 카테고리


@OneToOne(fetch = FetchType.LAZY) //Store 테이블과 1:1 관계 매핑
@JoinColumn(name = "store_id")
private Store store;

//양방향 고려
// @OneToMany(fetch = FetchType.LAZY)//멤버별 푸드 카테고리 테이블과 1:N관계매핑
// @JoinColumn(name="memberFoodCategory_id")
// private List<MemberFoodCategory>memberFoodCategory;




Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,17 @@
import com.example.umc_9th.domain.member.exception.code.MemberSuccessCode;
import com.example.umc_9th.domain.member.service.MemberService;
import com.example.umc_9th.grobal.apiPayload.ApiResponse;
import com.example.umc_9th.grobal.auth.enums.Role;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/members")
public class MemberController {

private final MemberService memberService;
Expand All @@ -22,7 +24,7 @@ public class MemberController {
@PostMapping("/sign-up")
public ApiResponse<MemberResDTO.JoinDTO> signUp(
@RequestBody MemberReqDTO.JoinDTO dto
) {
) {
return ApiResponse.success(MemberSuccessCode.FOUND, memberService.signup(dto));
}

Expand All @@ -34,4 +36,8 @@ public ApiResponse<MemberResDTO.LoginDTO> login(
return ApiResponse.success(MemberSuccessCode.FOUND, memberService.login(dto));
}





}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.example.umc_9th.domain.member.controller;


import com.example.umc_9th.domain.member.dto.req.MemberReqDTO;
import com.example.umc_9th.domain.member.dto.res.MemberResDTO;
import com.example.umc_9th.domain.member.exception.code.MemberSuccessCode;
import com.example.umc_9th.domain.member.service.MemberService;
import com.example.umc_9th.grobal.apiPayload.ApiResponse;
import com.example.umc_9th.grobal.auth.enums.Role;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
@RequiredArgsConstructor
public class MemberLogoutController {

private final MemberService memberService;



@PostMapping("/logout")
@Operation(summary = "로그아웃")
public ApiResponse<String> logout(HttpServletRequest request) {
memberService.logout();

// 세션 무효화
HttpSession session = request.getSession(false);
if (session != null) {
session.invalidate();
}

return ApiResponse.onSuccess("로그아웃되었습니다.");
}




}
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,20 @@
import com.example.umc_9th.domain.member.dto.req.MemberReqDTO;
import com.example.umc_9th.domain.member.dto.res.MemberResDTO;
import com.example.umc_9th.domain.member.entity.Member;
import com.example.umc_9th.grobal.auth.enums.Role;
import lombok.Builder;

import java.time.LocalDateTime;

public class MemberConverter {

public static Member toMember(MemberReqDTO.JoinDTO dto) {
public static Member toMember(MemberReqDTO.JoinDTO dto,String password,Role role) {
return Member.builder()
.email(dto.email())
.password(dto.password())
.password(password)
.phoneNumber(dto.phoneNumber())
.name(dto.name())
.role(role)
.gender(dto.gender())
.birthDate(dto.birthDate())
.address(dto.address())
Expand All @@ -20,12 +25,40 @@ public static Member toMember(MemberReqDTO.JoinDTO dto) {
.build();
}

// 실습1
public static MemberResDTO.LoginDTO toLoginDTO(Member member) {
return MemberResDTO.LoginDTO.builder()
.memberId(member.getMemberId())
.email(member.getEmail())
.name(member.getName())
.role(member.getRole().name()) // ROLE_USER, ROLE_ADMIN
.build();
}
//실습 2
// public static MemberResDTO.LoginDTO toLoginDTO(Member member, String accessToken) {
// return MemberResDTO.LoginDTO.builder()
// .memberId(member.getMemberId())
// .accessToken(accessToken) // JWT 토큰 추가
// .build();
// }

// public static MemberResDTO.LoginDTO toLoginDTO(Member member) {
// return MemberResDTO.LoginDTO.builder()
// .memberId(member.getMemberId())
// .email(member.getEmail())
// .name(member.getName())
// .build();
// }

public static MemberResDTO.JoinDTO toJoinDTO(Member member) {
return MemberResDTO.JoinDTO.builder()
.memberId(member.getMemberId())
.createAt(member.getCreatedAt())
.build();
}



}


Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
package com.example.umc_9th.domain.member.dto.req;

import com.example.umc_9th.domain.member.Gender;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;

import java.time.LocalDate;
import java.util.List;

public class MemberReqDTO {

public record JoinDTO(
@Email
String email, // 추가
@NotBlank
String password, // 추가
String phoneNumber,
String name,
Expand All @@ -21,7 +25,9 @@ public record JoinDTO(
){}

public record LoginDTO(
@NotBlank
String email,
@NotBlank
String password
){}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,23 @@ public record JoinDTO(
LocalDateTime createAt
){}

@Builder
//실습1
@Builder
public record LoginDTO(
Long memberId,
String accessToken,
String refreshToken,
LocalDateTime loginAt
String name,
String email,
String role
){}


//실습2
// @Builder
// public record LoginDTO(
// Long memberId,
// String accessToken
// ){}



}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.example.umc_9th.domain.food.entity.MemberFood;
import com.example.umc_9th.domain.member.Gender;
import com.example.umc_9th.grobal.BaseEntity;
import com.example.umc_9th.grobal.auth.enums.Role;
import jakarta.persistence.*;
import lombok.*;

Expand Down Expand Up @@ -55,6 +56,12 @@ public class Member extends BaseEntity {
@Column(length = 255)
String refreshToken;

@Enumerated(EnumType.STRING)
private Role role;




// 회원의 선호 카테고리 목록 (1:N 관계)
@OneToMany(mappedBy = "member", cascade = CascadeType.ALL)
private List<MemberFood> memberPreferList = new ArrayList<>();
Expand Down
Loading
Loading