Skip to content
Open
Show file tree
Hide file tree
Changes from 2 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
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package roomescape.auth;
package auth;

import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletRequest;
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/auth/AuthConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package auth;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan(basePackages = "auth")
public class AuthConfig {
@Bean
public JwtUtils jwtUtils(@Value("${roomescape.auth.jwt.secret}") String jwtSecret) {
return new JwtUtils(jwtSecret);
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
package roomescape.provider;
package auth;

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import jakarta.security.auth.message.config.AuthConfigProvider;
import org.springframework.stereotype.Component;
import roomescape.member.Member;
import roomescape.member.MemberResponse;
import org.springframework.beans.factory.annotation.Value;
public class JwtUtils {
private final String secretKey;

public JwtUtils(String secretKey) {
this.secretKey = secretKey;
}
public String createToken(Member member) {

@Component
public class TokenProvider {
public static String createToken(Member member) {
String secretKey = "Yn2kjibddFAWtnPJ2AFlL8WXmohJMCvigQggaEypa5E=";
String accessToken = Jwts.builder()
.setSubject(member.getId().toString())
.claim("name", member.getName())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package roomescape.auth;
package auth;

import jakarta.servlet.http.HttpServletRequest;
import org.springframework.core.MethodParameter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package roomescape.auth;
package auth;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
Expand Down
23 changes: 23 additions & 0 deletions src/main/java/roomescape/DataLoader.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package roomescape;

import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;
import roomescape.member.Member;
import roomescape.member.MemberRepository;

@Profile("default")
@Component
public class DataLoader implements CommandLineRunner {
private final MemberRepository memberRepository;

public DataLoader(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}

@Override
public void run(final String... args) throws Exception {
final Member member1 = memberRepository.save(new Member("어드민", "[email protected]", "password", "ADMIN"));
final Member member2 = memberRepository.save(new Member("브라운", "[email protected]", "password", "USER"));
}
}
53 changes: 53 additions & 0 deletions src/main/java/roomescape/TestDataLoader.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package roomescape;

import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;
import roomescape.member.Member;
import roomescape.member.MemberRepository;
import roomescape.reservation.Reservation;
import roomescape.reservation.ReservationRepository;
import roomescape.theme.Theme;
import roomescape.theme.ThemeRepository;
import roomescape.time.Time;
import roomescape.time.TimeRepository;

@Profile("test")
@Component
public class TestDataLoader implements CommandLineRunner {
private final MemberRepository memberRepository;
private final ThemeRepository themeRepository;
private final TimeRepository timeRepository;
private final ReservationRepository reservationRepository;

public TestDataLoader(MemberRepository memberRepository, ThemeRepository themeRepository, TimeRepository timeRepository, ReservationRepository reservationRepository) {
this.memberRepository = memberRepository;
this.themeRepository = themeRepository;
this.timeRepository = timeRepository;
this.reservationRepository = reservationRepository;
}

@Override
public void run(final String... args) throws Exception {
Member member1 = memberRepository.save(new Member("어드민", "[email protected]", "password", "ADMIN"));
Member member2 = memberRepository.save(new Member("브라운", "[email protected]", "password", "USER"));

Theme theme1 = themeRepository.save(new Theme("테마1", "테마1입니다."));
Theme theme2 = themeRepository.save(new Theme("테마2", "테마2입니다."));
Theme theme3 = themeRepository.save(new Theme("테마3", "테마3입니다."));

Time time1 = timeRepository.save(new Time("10:00"));
Time time2 = timeRepository.save(new Time("12:00"));
Time time3 = timeRepository.save(new Time("14:00"));
Time time4 = timeRepository.save(new Time("16:00"));
Time time5 = timeRepository.save(new Time("18:00"));
Time time6 = timeRepository.save(new Time("20:00"));

reservationRepository.save(new Reservation("어드민", "2024-03-01", time1, theme1, member1));
reservationRepository.save(new Reservation("어드민", "2024-03-01", time2, theme2, member1));
reservationRepository.save(new Reservation("어드민", "2024-03-01", time3, theme3, member1));
reservationRepository.save(new Reservation("브라운", "2024-03-01", time4, theme1, member2));

}

}
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
package roomescape.auth;
package roomescape;

import auth.AdminInterceptor;
import auth.LoginMemberArgumentResolver;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.List;

@Configuration
@Import(auth.AuthConfig.class)
public class WebConfig implements WebMvcConfigurer {

@Autowired
Expand Down
9 changes: 5 additions & 4 deletions src/main/java/roomescape/member/MemberService.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,16 @@
import io.jsonwebtoken.security.Keys;
import jakarta.servlet.http.Cookie;
import org.springframework.stereotype.Service;
import roomescape.provider.TokenProvider;
import auth.JwtUtils;

@Service
public class MemberService {
private MemberRepository memberRepository;
private final JwtUtils jwtUtils;

public MemberService(MemberRepository memberRepository) {
public MemberService(MemberRepository memberRepository, JwtUtils jwtUtils) {
this.memberRepository = memberRepository;
this.jwtUtils = jwtUtils;
}

public MemberResponse createMember(MemberRequest memberRequest) {
Expand All @@ -24,8 +26,7 @@ public Member findMemberByEmailAndPassword(String email, String password) {
return member;
}
public String createToken(Member member) {
String accessToken = TokenProvider.createToken(member);
return accessToken;
return jwtUtils.createToken(member);
}
public String extractTokenFromCookie(Cookie[] cookies) {
for (Cookie cookie : cookies) {
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/roomescape/reservation/Reservation.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,15 @@ public class Reservation {
@ManyToOne
private Member member;

public Reservation(Long id, String name, String date, Time time, Theme theme, Member member) {
this.id = id;
public Reservation(String name, String date, Time time, Theme theme, Member member) {
this.name = name;
this.date = date;
this.time = time;
this.theme = theme;
this.member = member;
}

public Reservation(String name, String date, Time time, Theme theme) {
public Reservation(String name, String date, Time time, Theme theme ) {
this.name = name;
this.date = date;
this.time = time;
Expand All @@ -39,6 +38,7 @@ public Reservation() {

}


public Long getId() {
return id;
}
Expand Down
3 changes: 2 additions & 1 deletion src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@ spring.jpa.properties.hibernate.format_sql=true
spring.jpa.ddl-auto=create-drop
spring.jpa.defer-datasource-initialization=true

#roomescape.auth.jwt.secret= Yn2kjibddFAWtnPJ2AFlL8WXmohJMCvigQggaEypa5E=
roomescape.auth.jwt.secret= Yn2kjibddFAWtnPJ2AFlL8WXmohJMCvigQggaEypa5E=
roomescape.auth.jwt.expiration=86400000

33 changes: 0 additions & 33 deletions src/main/resources/schema.sql

This file was deleted.

9 changes: 9 additions & 0 deletions src/test/java/roomescape/JpaTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import roomescape.time.Time;
Expand All @@ -27,5 +28,13 @@ public class JpaTest {

assertThat(persistTime.getTime()).isEqualTo(time.getTime());
}

@Value("${roomescape.auth.jwt.secret}")
private String secretKey;

@Test
void 팔단계() {
assertThat(secretKey).isNotBlank();
}
}

9 changes: 8 additions & 1 deletion src/test/java/roomescape/MissionStepTest.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package roomescape;

import auth.JwtUtils;
import io.restassured.RestAssured;
import io.restassured.http.ContentType;
import io.restassured.response.ExtractableResponse;
Expand All @@ -10,7 +11,8 @@
import roomescape.reservation.ReservationResponse;
import roomescape.reservation.MyReservationResponse;
import roomescape.waiting.WaitingResponse;

import org.springframework.stereotype.Component;
import java.awt.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -160,5 +162,10 @@ private String createToken(String email, String password) {

assertThat(status).isEqualTo("1번째 예약대기");
}
@Test
void 칠단계() {
Component componentAnnotation = (Component) JwtUtils.class.getAnnotation(Component.class);
assertThat(componentAnnotation).isNull();
}
}