Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PR] 로그인 시 헤더 내용 추가, 마이페이지 작성 #59

Merged
merged 1 commit into from
Apr 16, 2024
Merged
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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
.gradle/
.idea/
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,12 @@ public class Member {
@Column
private String profile;
@Column
private String image;
@Column
@CreationTimestamp
private String signUpDate;
@Column(name = "IS_WITHDRAW")
private boolean isWithdraw;

@Column(name = "nationality_id")
private String nationalityId;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,23 @@ public ResponseEntity<?> withdraw(@RequestBody RequestMember member) {
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
}

@GetMapping("/mypage/{memberId}")
public ResponseEntity<ResponseMessage> mypage(@PathVariable String memberId) {

HttpHeaders headers = new HttpHeaders();
headers.setContentType(new MediaType("application", "json", Charset.forName("UTF-8")));

ResponseMember responseMember = modelMapper.map(memberService.getMemberDetailsByMemberId(memberId), ResponseMember.class);

Map<String, Object> responseMap = new HashMap<>();
responseMap.put("result", responseMember);

return ResponseEntity
.ok()
.headers(headers)
.body(new ResponseMessage(200, "마이페이지 로딩 성공", responseMap));
}

@GetMapping("/health_check")
public String healthCheck() {
return "Good";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.omoknoone.onionhotsayyo.member.service.AuthService;
import org.omoknoone.onionhotsayyo.member.service.MemberService;
import org.omoknoone.onionhotsayyo.member.vo.RequestLogin;
import org.omoknoone.onionhotsayyo.nationality.service.NationalityService;
import org.springframework.core.env.Environment;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
Expand All @@ -26,13 +27,15 @@
public class AuthenticationFilter extends UsernamePasswordAuthenticationFilter {

private final MemberService memberService;
private final NationalityService nationalityService;
private final AuthService authService;
private final Environment environment;
private final JwtTokenProvider jwtTokenProvider;

public AuthenticationFilter(AuthenticationManager authenticationManager, MemberService memberService, AuthService authService, Environment environment, JwtTokenProvider jwtTokenProvider) {
public AuthenticationFilter(AuthenticationManager authenticationManager, MemberService memberService, NationalityService nationalityService, AuthService authService, Environment environment, JwtTokenProvider jwtTokenProvider) {
super(authenticationManager);
this.memberService = memberService;
this.nationalityService = nationalityService;
this.authService = authService;
this.environment = environment;
this.jwtTokenProvider = jwtTokenProvider;
Expand Down Expand Up @@ -68,6 +71,7 @@ protected void successfulAuthentication(HttpServletRequest request,
/* 설명. DB를 다녀와 사용자의 고유 아이디(memberId)를 가져올 예정(Principal 객체(Authentication)에는 없는 값이므로) */
MemberDTO memberDetails = memberService.getMemberDetailsByMemberId(id);
String memberId = memberDetails.getMemberId();
String language = nationalityService.viewLanguage(memberDetails.getNationalityId());
// String roleName = memberDetails.getRoleName();

Claims claims = Jwts.claims().setSubject(memberId);
Expand All @@ -84,6 +88,7 @@ protected void successfulAuthentication(HttpServletRequest request,

response.addHeader("accessToken", accessToken);
response.addHeader("memberId", memberId);
response.addHeader("language", language);

/* 설명. refreshToken이 아닌 token의 Id를 전달, refreshToken은 서버만 가지고 있음 */
Cookie cookie = new Cookie("refreshTokenId", refreshTokenId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public CorsConfigurationSource corsConfigurationSource() {
config.setAllowedOrigins(List.of("http://localhost:5173"));
config.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE"));
config.setAllowedHeaders(List.of("*"));
config.setExposedHeaders(List.of("accessToken", "memberId"));
config.setExposedHeaders(List.of("accessToken", "memberId", "language"));

UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", config);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import jakarta.servlet.Filter;
import org.omoknoone.onionhotsayyo.member.service.AuthService;
import org.omoknoone.onionhotsayyo.member.service.MemberService;
import org.omoknoone.onionhotsayyo.nationality.service.NationalityService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand All @@ -23,6 +24,7 @@
public class WebSecurity {

private final MemberService memberService;
private final NationalityService nationalityService;
private final AuthService authService;
private final BCryptPasswordEncoder bCryptPasswordEncoder;
private final Environment environment;
Expand All @@ -31,11 +33,12 @@ public class WebSecurity {
private final CorsConfig corsConfig;

@Autowired
public WebSecurity(MemberService memberService, AuthService authService,
public WebSecurity(MemberService memberService, NationalityService nationalityService, AuthService authService,
BCryptPasswordEncoder bCryptPasswordEncoder,
Environment environment,
JwtUtil jwtUtil, JwtTokenProvider jwtTokenProvider, CorsConfig corsConfig) {
this.memberService = memberService;
this.nationalityService = nationalityService;
this.authService = authService;
this.bCryptPasswordEncoder = bCryptPasswordEncoder;
this.environment = environment;
Expand Down Expand Up @@ -82,7 +85,7 @@ protected SecurityFilterChain configure(HttpSecurity http) throws Exception {

/* 설명. 인증(Authentication)용 메소드 */
private Filter getAuthenticationFilter(AuthenticationManager authenticationManager) {
return new AuthenticationFilter(authenticationManager, memberService, authService, environment, jwtTokenProvider);
return new AuthenticationFilter(authenticationManager, memberService, nationalityService, authService, environment, jwtTokenProvider);
}

}
Original file line number Diff line number Diff line change
@@ -1,49 +1,15 @@
package org.omoknoone.onionhotsayyo.member.vo;
import lombok.*;

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@ToString
public class ResponseMember {
private String memberId;
private String nickname;
private String email;

public ResponseMember() {
}

public ResponseMember(String memberId, String nickname, String email) {
this.memberId = memberId;
this.nickname = nickname;
this.email = email;
}

public String getMemberId() {
return memberId;
}

public void setMemberId(String memberId) {
this.memberId = memberId;
}

public String getNickname() {
return nickname;
}

public void setNickname(String nickname) {
this.nickname = nickname;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

@Override
public String toString() {
return "ResponseMember{" +
"memberId='" + memberId + '\'' +
", nickname='" + nickname + '\'' +
", email='" + email + '\'' +
'}';
}
private String profile;
private String image;
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@
public interface NationalityService {

List<NationalityDTO> viewNationality();
String viewLanguage(String nationalityId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,12 @@ public List<NationalityDTO> viewNationality() {
List<Nationality> nationalityList = nationalityRepository.findAll();
return modelMapper.map(nationalityList, new TypeToken<List<NationalityDTO>>() {}.getType());
}

@Override
public String viewLanguage(String nationalityId) {

Nationality nationality = nationalityRepository.findById(nationalityId).orElseThrow(IllegalArgumentException::new);

return nationality.getLanguage();
}
}