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
1 change: 1 addition & 0 deletions Remoa-BE
Submodule Remoa-BE added at 4f2ba7
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ dependencies {

// h2 db 추가
implementation "com.h2database:h2"

//ModelMapper 라이브러리 추가
implementation 'org.modelmapper:modelmapper:2.4.2'
}

tasks.named('test') {
Expand Down
Binary file removed build/libs/BE-ver_230228.jar
Binary file not shown.
Binary file removed build/libs/BE-ver_230301.jar
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,13 @@
import Remoa.BE.Member.Service.FollowService;
import Remoa.BE.Member.Service.MemberService;
import Remoa.BE.exception.CustomMessage;
import Remoa.BE.exception.response.ErrorResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import java.util.Arrays;
import java.util.List;
import java.util.Objects;

Expand All @@ -27,7 +22,6 @@
@RestController
@Slf4j
@RequiredArgsConstructor
@CrossOrigin(origins = "*")
public class FollowController {

private final FollowService followService;
Expand Down
35 changes: 20 additions & 15 deletions src/main/java/Remoa/BE/Member/Controller/KakaoController.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,7 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.Map;
import java.util.Optional;
Expand All @@ -28,12 +25,12 @@
@RestController
@Slf4j
@RequiredArgsConstructor
@CrossOrigin(origins = "*") // 프론트에서 추가 요청
public class KakaoController {



private final KakaoService ks;
private final MemberService memberService;
private final HttpSession httpSession;

/**
* 카카오 로그인을 통해 code를 query string으로 받아오면, 코드를 통해 토큰, 토큰을 통해 사용자 정보를 얻어와 db에 해당 사용자가 존재하는지 여부를
Expand Down Expand Up @@ -94,9 +91,16 @@ public ResponseEntity<Object> testLogin(@RequestBody Integer kakaoId, HttpServle
public ResponseEntity<Object> signupKakaoMember(@RequestBody @Validated ReqSignupDto form, HttpServletRequest request) {

Member member = new Member();

//닉네임 사용 가능하면 그대로 진행, 불가능하면 임의 닉네임 "유저-{kakaoId}로 지정.
Boolean nicknameDuplicate = memberService.isNicknameDuplicate(form.getNickname());
if (nicknameDuplicate) { //특수문자는 닉네임에 사용할 수 없으나 임의로 지정하는 닉네임에는 사용 가능하게 해서 또 다른 중복 문제 없게끔.
member.setNickname("유저-" + form.getKakaoId());
} else {
member.setNickname(form.getNickname());
}
member.setKakaoId(form.getKakaoId());
member.setEmail(form.getEmail());
member.setNickname(form.getNickname());
member.setProfileImage(form.getProfileImage());
member.setTermConsent(form.getTermConsent());

Expand Down Expand Up @@ -136,17 +140,18 @@ public ResponseEntity<Object> autoLogin(){
* 로그아웃 기능
세션무효화, jsession쿠키를 제거,
*/
@PostMapping("/user/logout")
public ResponseEntity<Object> logout(HttpServletResponse response){
@PostMapping ("/user/logout")
public ResponseEntity<Object> logout(HttpServletRequest request){
if(authorized(request)) {

SecurityContextHolder.clearContext();
request.getSession().invalidate();

SecurityContextHolder.clearContext(); // 현재 SecurityContext를 제거합니다.
httpSession.invalidate(); // HttpSession을 무효화합니다.
return successResponse(CustomMessage.OK,"로그아웃 되었습니다");

}

Cookie myCookie = new Cookie("JSESSIONID", null);
myCookie.setMaxAge(0); // 쿠키의 expiration 타임을 0으로 하여 없앤다.
myCookie.setPath("/"); // 모든 경로에서 삭제 됬음을 알린다.
response.addCookie(myCookie);
return successResponse(CustomMessage.OK,myCookie);
return errorResponse(CustomMessage.UNAUTHORIZED);
}


Expand Down
71 changes: 42 additions & 29 deletions src/main/java/Remoa/BE/Member/Controller/ProfileController.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import Remoa.BE.Member.Domain.Member;
import Remoa.BE.Member.Dto.Req.EditProfileForm;
import Remoa.BE.Member.Dto.Res.ResUserInfoDto;
import Remoa.BE.Member.Service.MemberService;
import Remoa.BE.Member.Service.ProfileService;
import Remoa.BE.exception.CustomMessage;
Expand All @@ -11,14 +12,14 @@
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import static Remoa.BE.exception.CustomBody.*;
import static Remoa.BE.utill.MemberInfo.authorized;
import static Remoa.BE.utill.MemberInfo.getMemberId;

@Slf4j
@RestController
@RequiredArgsConstructor
@CrossOrigin(origins = "*")
public class ProfileController {

private final ProfileService profileService;
Expand All @@ -27,46 +28,58 @@ public class ProfileController {

// 프로필 수정 범위 : 닉네임(중복확인), 핸드폰번호, 대학교, 한줄소개
@GetMapping("/user")
public ResponseEntity<Object> userHome(HttpServletRequest request) {

HttpSession session = request.getSession();
// 현재 로그인한 사용자의 세션 가져오기
Member loginMember = (Member) session.getAttribute("loginMember");

// 세션이 없으면 로그인 페이지로 이동
if (loginMember == null) {
return failResponse(CustomMessage.VALIDATED, "redirect:/login/kakao");
public ResponseEntity<Object> userInfo(HttpServletRequest request) {

if(authorized(request)) {
Long memberId = getMemberId();
// 로그인된 사용자의 정보를 db에서 다시 불러와 띄워줌.
Member member = memberService.findOne(memberId);
ResUserInfoDto resUserInfoDto = ResUserInfoDto.builder()
.email(member.getEmail())
.nickname(member.getNickname())
.phoneNumber(member.getPhoneNumber())
.university(member.getUniversity())
.oneLineIntroduction(member.getOneLineIntroduction())
.build();
return successResponse(CustomMessage.OK, resUserInfoDto);
}

// 로그인된 사용자의 정보를 db에서 다시 불러와 띄워줌.
Member member = memberService.findOne(loginMember.getMemberId());
return successResponse(CustomMessage.OK, member);
return errorResponse(CustomMessage.UNAUTHORIZED);

}

// RESTful API에서 PUT 매핑은 수정할 리소스를 명확하게 지정해야 하는데 이 경우에는 URL에 리소스 ID를 명시하는 것이 일반적이다.
// 그런데 우리는 수정할 사용자의 정보를 모두 입력받아 수정하는 형태이기 때문에
// URL에 리소스 ID를 명시할 필요가 없어서 PUT대신 POST 매핑을 사용하였습니다.
@PostMapping("/user")
@PutMapping("/user")
public ResponseEntity<Object> editProfile(@RequestBody EditProfileForm form, HttpServletRequest request) {
HttpSession session = request.getSession();
Member loginMember = (Member) session.getAttribute("loginMember");

if (loginMember == null) {
// 로그인되어 있지 않은 경우 로그인 페이지로 이동
return failResponse(CustomMessage.VALIDATED, "로그인하지 않은 회원입니다. <redirect:/login/kakao> 로 redirect");
}
if(authorized(request)){
Long memberId = getMemberId();

if (memberService.isNicknameDuplicate(form.getNickname())) {
return failResponse(CustomMessage.VALIDATED, "닉네임이 중복됩니다.");
}
Member myMember = memberService.findOne(memberId);
log.info(myMember.getNickname());
if(memberService.isNicknameDuplicate(myMember.getNickname())) {

// 사용자의 입력 정보를 DTO에 담아 서비스로 전달
EditProfileForm profileInfo = new EditProfileForm(
form.getNickname(), form.getPhoneNumber(), form.getUniversity(), form.getOneLineIntroduction());
profileService.editProfile(loginMember.getMemberId(), profileInfo);
// 사용자의 입력 정보를 DTO에 담아 서비스로 전달
profileService.editProfile(memberId, form);
ResUserInfoDto resUserInfoDto = ResUserInfoDto.builder()
.email(myMember.getEmail())
.nickname(myMember.getNickname())
.phoneNumber(myMember.getPhoneNumber())
.university(myMember.getUniversity())
.oneLineIntroduction(myMember.getOneLineIntroduction())
.build();

return successResponse(CustomMessage.OK, resUserInfoDto);
}

return errorResponse(CustomMessage.BAD_DUPLICATE);

}

// 수정이 완료되면 프로필 페이지로 이동
return successResponse(CustomMessage.OK, "redirect:/user");
return errorResponse(CustomMessage.UNAUTHORIZED);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
@RestController
@Slf4j
@RequiredArgsConstructor
@CrossOrigin(origins = "*")
public class WithdrewController {

private final WithdrewService withdrewService;
Expand Down
1 change: 0 additions & 1 deletion src/main/java/Remoa/BE/Member/Domain/Comment.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import Remoa.BE.Post.Domain.Post;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;

import javax.persistence.*;
Expand Down
1 change: 0 additions & 1 deletion src/main/java/Remoa/BE/Member/Domain/Follow.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;

import javax.persistence.*;
Expand Down
2 changes: 0 additions & 2 deletions src/main/java/Remoa/BE/Member/Domain/Member.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package Remoa.BE.Member.Domain;

import Remoa.BE.Post.Domain.Post;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
Expand Down
2 changes: 0 additions & 2 deletions src/main/java/Remoa/BE/Member/Dto/Res/ResSignupDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
import lombok.Builder;
import lombok.Getter;

import javax.validation.constraints.NotBlank;

@Builder
@Getter
public class ResSignupDto {
Expand Down
19 changes: 19 additions & 0 deletions src/main/java/Remoa/BE/Member/Dto/Res/ResUserInfoDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package Remoa.BE.Member.Dto.Res;

import lombok.Builder;
import lombok.Getter;

@Getter
@Builder
public class ResUserInfoDto {

private String email;

private String nickname;
private String phoneNumber;

private String university;

private String oneLineIntroduction;

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,11 @@
import Remoa.BE.Member.Domain.Member;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import javax.persistence.EntityManager;
import javax.persistence.EntityNotFoundException;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

@Repository
@Slf4j
Expand Down
1 change: 0 additions & 1 deletion src/main/java/Remoa/BE/Member/Service/FollowService.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Optional;

@Service
@Slf4j
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/Remoa/BE/Member/Service/KakaoService.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

Expand Down Expand Up @@ -121,7 +122,7 @@ public Map<String, Object> getUserInfo(String access_token) throws IOException {
int responseCode = urlConnection.getResponseCode();
log.debug("responseCode = {}", responseCode);

BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), StandardCharsets.UTF_8));
String line = "";
String res = "";
//다양한 형식(한 줄 이상의 JSON 데이터)를 받기 위한 작업
Expand Down
7 changes: 2 additions & 5 deletions src/main/java/Remoa/BE/Member/Service/MemberService.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,10 @@ private void validateDuplicateMember(Member member) {
}
}


public Boolean isNicknameDuplicate(String nickname) {
List<Member> findMembers = memberRepository.findByNickname(nickname);
if (findMembers.isEmpty()) {
return false;
} else {
return true;
}
return !(findMembers.size()==0);
}


Expand Down
1 change: 0 additions & 1 deletion src/main/java/Remoa/BE/Member/Service/ProfileService.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package Remoa.BE.Member.Service;

import Remoa.BE.Member.Dto.Req.EditProfileForm;
import Remoa.BE.Member.Repository.MemberRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/Remoa/BE/Post/Controller/CommentController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package Remoa.BE.Post.Controller;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
@RequiredArgsConstructor
public class CommentController {
}
11 changes: 11 additions & 0 deletions src/main/java/Remoa/BE/Post/Controller/FeedBackController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package Remoa.BE.Post.Controller;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
@RequiredArgsConstructor
public class FeedBackController {
}
Loading