Merge branch 'backend' of github.com:TeamBNBN/edufocus into be/Board
This commit is contained in:
commit
828df9c91c
@ -1,8 +1,13 @@
|
|||||||
package com.edufocus.edufocus.lecture.controller;
|
package com.edufocus.edufocus.lecture.controller;
|
||||||
|
|
||||||
import com.edufocus.edufocus.lecture.entity.Lecture;
|
import com.edufocus.edufocus.lecture.entity.LectureCreateRequest;
|
||||||
import com.edufocus.edufocus.lecture.entity.LectureRegist;
|
import com.edufocus.edufocus.lecture.entity.LectureSearchResponse;
|
||||||
|
import com.edufocus.edufocus.lecture.entity.LectureDetailResponse;
|
||||||
import com.edufocus.edufocus.lecture.service.LectureService;
|
import com.edufocus.edufocus.lecture.service.LectureService;
|
||||||
|
import com.edufocus.edufocus.user.model.entity.User;
|
||||||
|
import com.edufocus.edufocus.user.model.service.UserService;
|
||||||
|
import com.edufocus.edufocus.user.model.service.UserServiceImpl;
|
||||||
|
import com.edufocus.edufocus.user.util.JWTUtil;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
@ -18,16 +23,19 @@ import java.util.List;
|
|||||||
public class LectureController {
|
public class LectureController {
|
||||||
|
|
||||||
private final LectureService lectureService;
|
private final LectureService lectureService;
|
||||||
|
private final JWTUtil jwtUtil;
|
||||||
|
private final UserService userService;
|
||||||
|
|
||||||
@PostMapping
|
@PostMapping
|
||||||
public ResponseEntity<?> createLecture (@RequestBody long userId, LectureRegist lectureRegist) {
|
public ResponseEntity<?> createLecture(@RequestHeader("Authorization") String accessToken, @RequestBody LectureCreateRequest lectureCreateRequest) {
|
||||||
System.out.println("@@@@@@@@@@@@@@@@@@>>>>>>>>>>>>>>>>>>>>>> "+userId);
|
Long userId = Long.parseLong(jwtUtil.getUserId(accessToken));
|
||||||
lectureService.createLecture(userId, lectureRegist);
|
|
||||||
|
lectureService.createLecture(userId, lectureCreateRequest);
|
||||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@DeleteMapping("/{lectureId}")
|
@DeleteMapping("/{lectureId}")
|
||||||
public ResponseEntity<?> deleteLecture (@RequestBody long userId, @PathVariable long lectureId) {
|
public ResponseEntity<?> deleteLecture(@RequestBody long userId, @PathVariable long lectureId) {
|
||||||
if (!lectureService.deleteLecture(userId, lectureId)) {
|
if (!lectureService.deleteLecture(userId, lectureId)) {
|
||||||
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
|
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
|
||||||
}
|
}
|
||||||
@ -36,8 +44,8 @@ public class LectureController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public ResponseEntity<?> findAllLecture () {
|
public ResponseEntity<?> findAllLecture() {
|
||||||
List<Lecture> lectures = lectureService.findAllLecture();
|
List<LectureSearchResponse> lectures = lectureService.findAllLecture();
|
||||||
|
|
||||||
if (lectures.isEmpty()) {
|
if (lectures.isEmpty()) {
|
||||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||||
@ -46,17 +54,27 @@ public class LectureController {
|
|||||||
return new ResponseEntity<>(lectures, HttpStatus.OK);
|
return new ResponseEntity<>(lectures, HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/title/{title}")
|
@GetMapping("/{lectureId}")
|
||||||
public ResponseEntity<?> findByTitle (@PathVariable String title) {
|
public ResponseEntity<?> findById(@PathVariable long lectureId) {
|
||||||
Lecture lecture = lectureService.findLectureByTitle(title);
|
LectureDetailResponse lectureDetailResponse = lectureService.findLectureById(lectureId);
|
||||||
|
|
||||||
if (lecture == null) {
|
if (lectureDetailResponse == null) {
|
||||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ResponseEntity<>(lecture, HttpStatus.OK);
|
return new ResponseEntity<>(lectureDetailResponse, HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/mylecture")
|
||||||
|
public ResponseEntity<?> findMyLecture(@RequestHeader("Authorization") String accessToken) {
|
||||||
|
Long userId = Long.parseLong(jwtUtil.getUserId(accessToken));
|
||||||
|
|
||||||
|
List<LectureSearchResponse> myLectures = lectureService.findMyLecture(userId);
|
||||||
|
|
||||||
|
if (myLectures.isEmpty()) {
|
||||||
|
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ResponseEntity<>(myLectures, HttpStatus.OK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,9 @@ public class Lecture {
|
|||||||
@Lob
|
@Lob
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private String image;
|
||||||
|
|
||||||
@Column(name = "start_date")
|
@Column(name = "start_date")
|
||||||
@Temporal(TemporalType.DATE)
|
@Temporal(TemporalType.DATE)
|
||||||
private Date startDate;
|
private Date startDate;
|
||||||
@ -43,6 +46,4 @@ public class Lecture {
|
|||||||
@Column
|
@Column
|
||||||
private boolean online;
|
private boolean online;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.edufocus.edufocus.lecture.entity;
|
package com.edufocus.edufocus.lecture.entity;
|
||||||
|
|
||||||
import jakarta.persistence.*;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
@ -10,18 +9,16 @@ import java.util.Date;
|
|||||||
@Getter
|
@Getter
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class LectureRegist {
|
public class LectureCreateRequest {
|
||||||
|
|
||||||
private Long userId;
|
|
||||||
|
|
||||||
private String title;
|
private String title;
|
||||||
|
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
@Temporal(TemporalType.DATE)
|
private String image;
|
||||||
|
|
||||||
private Date startDate;
|
private Date startDate;
|
||||||
|
|
||||||
@Temporal(TemporalType.DATE)
|
|
||||||
private Date endDate;
|
private Date endDate;
|
||||||
|
|
||||||
private String plan;
|
private String plan;
|
@ -0,0 +1,33 @@
|
|||||||
|
package com.edufocus.edufocus.lecture.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class LectureDetailResponse {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private String teacherName;
|
||||||
|
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
private String image;
|
||||||
|
|
||||||
|
private Date startDate;
|
||||||
|
|
||||||
|
private Date endDate;
|
||||||
|
|
||||||
|
private String plan;
|
||||||
|
|
||||||
|
private boolean online;
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.edufocus.edufocus.lecture.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class LectureSearchResponse {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
private String image;
|
||||||
|
}
|
@ -12,4 +12,6 @@ import java.util.List;
|
|||||||
public interface LectureRepository extends JpaRepository<Lecture, Long> {
|
public interface LectureRepository extends JpaRepository<Lecture, Long> {
|
||||||
Lecture findByTitle(@Param("title") String title);
|
Lecture findByTitle(@Param("title") String title);
|
||||||
|
|
||||||
|
List<Lecture> findAllByUserId(@Param("userId") Long userId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
package com.edufocus.edufocus.lecture.service;
|
package com.edufocus.edufocus.lecture.service;
|
||||||
|
|
||||||
import com.edufocus.edufocus.lecture.entity.Lecture;
|
import com.edufocus.edufocus.lecture.entity.LectureCreateRequest;
|
||||||
import com.edufocus.edufocus.lecture.entity.LectureRegist;
|
import com.edufocus.edufocus.lecture.entity.LectureSearchResponse;
|
||||||
|
import com.edufocus.edufocus.lecture.entity.LectureDetailResponse;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -10,12 +11,14 @@ import java.util.List;
|
|||||||
@Service
|
@Service
|
||||||
public interface LectureService {
|
public interface LectureService {
|
||||||
|
|
||||||
void createLecture(long userId, LectureRegist lectureRegist);
|
void createLecture(long userId, LectureCreateRequest lectureCreateRequest);
|
||||||
|
|
||||||
boolean deleteLecture(long userId, long LectureId);
|
boolean deleteLecture(long userId, long LectureId);
|
||||||
|
|
||||||
List<Lecture> findAllLecture();
|
List<LectureSearchResponse> findAllLecture();
|
||||||
|
|
||||||
Lecture findLectureByTitle(String title);
|
LectureDetailResponse findLectureById(long lectureId);
|
||||||
|
|
||||||
|
List<LectureSearchResponse> findMyLecture(long userId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,23 @@
|
|||||||
package com.edufocus.edufocus.lecture.service;
|
package com.edufocus.edufocus.lecture.service;
|
||||||
|
|
||||||
import com.edufocus.edufocus.lecture.entity.Lecture;
|
import com.edufocus.edufocus.lecture.entity.Lecture;
|
||||||
import com.edufocus.edufocus.lecture.entity.LectureRegist;
|
import com.edufocus.edufocus.lecture.entity.LectureCreateRequest;
|
||||||
|
import com.edufocus.edufocus.lecture.entity.LectureSearchResponse;
|
||||||
|
import com.edufocus.edufocus.lecture.entity.LectureDetailResponse;
|
||||||
import com.edufocus.edufocus.lecture.repository.LectureRepository;
|
import com.edufocus.edufocus.lecture.repository.LectureRepository;
|
||||||
|
import com.edufocus.edufocus.registration.entity.Registration;
|
||||||
|
import com.edufocus.edufocus.registration.repository.RegistrationRepository;
|
||||||
import com.edufocus.edufocus.user.model.entity.User;
|
import com.edufocus.edufocus.user.model.entity.User;
|
||||||
import com.edufocus.edufocus.user.model.repository.UserRepository;
|
import com.edufocus.edufocus.user.model.repository.UserRepository;
|
||||||
import jakarta.transaction.Transactional;
|
import jakarta.transaction.Transactional;
|
||||||
|
import lombok.Builder;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@Builder
|
||||||
@Service
|
@Service
|
||||||
@Transactional
|
@Transactional
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@ -20,19 +27,22 @@ public class LectureServiceImpl implements LectureService {
|
|||||||
|
|
||||||
private final UserRepository userRepository;
|
private final UserRepository userRepository;
|
||||||
|
|
||||||
|
private final RegistrationRepository registrationRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createLecture(long userId, LectureRegist lectureRegist) {
|
public void createLecture(long userId, LectureCreateRequest lectureCreateRequest) {
|
||||||
|
|
||||||
User user = userRepository.findById(userId).get();
|
User user = userRepository.findById(userId).get();
|
||||||
|
|
||||||
Lecture lecture = new Lecture();
|
Lecture lecture = new Lecture();
|
||||||
lecture.setUser(user);
|
lecture.setUser(user);
|
||||||
|
|
||||||
lecture.setTitle(lectureRegist.getTitle());
|
lecture.setTitle(lectureCreateRequest.getTitle());
|
||||||
lecture.setDescription(lectureRegist.getDescription());
|
lecture.setDescription(lectureCreateRequest.getDescription());
|
||||||
lecture.setStartDate(lectureRegist.getStartDate());
|
lecture.setImage(lectureCreateRequest.getImage());
|
||||||
lecture.setEndDate(lectureRegist.getEndDate());
|
lecture.setStartDate(lectureCreateRequest.getStartDate());
|
||||||
lecture.setPlan(lectureRegist.getPlan());
|
lecture.setEndDate(lectureCreateRequest.getEndDate());
|
||||||
|
lecture.setPlan(lectureCreateRequest.getPlan());
|
||||||
|
|
||||||
lectureRepository.save(lecture);
|
lectureRepository.save(lecture);
|
||||||
}
|
}
|
||||||
@ -50,14 +60,78 @@ public class LectureServiceImpl implements LectureService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Lecture> findAllLecture() {
|
public List<LectureSearchResponse> findAllLecture() {
|
||||||
return lectureRepository.findAll();
|
List<Lecture> lectureList = lectureRepository.findAll();
|
||||||
|
|
||||||
|
List<LectureSearchResponse> lectureSearchResponseList = new ArrayList<>();
|
||||||
|
for (Lecture lecture : lectureList) {
|
||||||
|
LectureSearchResponse lectureSearchResponse = LectureSearchResponse.builder()
|
||||||
|
.id(lecture.getId())
|
||||||
|
.title(lecture.getTitle())
|
||||||
|
.image(lecture.getImage()).build();
|
||||||
|
|
||||||
|
lectureSearchResponseList.add(lectureSearchResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
return lectureSearchResponseList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Lecture findLectureByTitle(String title) {
|
public LectureDetailResponse findLectureById(long lectureId) {
|
||||||
return lectureRepository.findByTitle(title);
|
|
||||||
|
Lecture lecture = lectureRepository.findById(lectureId).get();
|
||||||
|
|
||||||
|
if (lecture == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
LectureDetailResponse lectureDetailResponse = new LectureDetailResponse().builder()
|
||||||
|
.id(lecture.getId())
|
||||||
|
.title(lecture.getTitle())
|
||||||
|
.description(lecture.getDescription())
|
||||||
|
.image(lecture.getImage())
|
||||||
|
.startDate(lecture.getStartDate())
|
||||||
|
.endDate(lecture.getEndDate())
|
||||||
|
.plan(lecture.getPlan())
|
||||||
|
.online(lecture.isOnline())
|
||||||
|
.teacherName(lecture.getUser().getName())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
return lectureDetailResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<LectureSearchResponse> findMyLecture(long userId) {
|
||||||
|
User user = userRepository.findById(userId).get();
|
||||||
|
|
||||||
|
List<LectureSearchResponse> myLectureList = new ArrayList<>();
|
||||||
|
|
||||||
|
if (user.getRole().equals("ADMIN")) {
|
||||||
|
List<Lecture> lectureList = lectureRepository.findAllByUserId(userId);
|
||||||
|
|
||||||
|
for (Lecture lecture : lectureList) {
|
||||||
|
LectureSearchResponse lectureSearchResponse = new LectureSearchResponse().builder()
|
||||||
|
.id(lecture.getId())
|
||||||
|
.title(lecture.getTitle())
|
||||||
|
.image(lecture.getImage()).build();
|
||||||
|
|
||||||
|
myLectureList.add(lectureSearchResponse);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
List<Registration> registrationList = registrationRepository.findAllByUserId(userId);
|
||||||
|
|
||||||
|
for (Registration registration : registrationList) {
|
||||||
|
Lecture lecture = registration.getLecture();
|
||||||
|
|
||||||
|
LectureSearchResponse lectureSearchResponse = new LectureSearchResponse().builder()
|
||||||
|
.id(lecture.getId())
|
||||||
|
.title(lecture.getTitle())
|
||||||
|
.image(lecture.getImage()).build();
|
||||||
|
|
||||||
|
myLectureList.add(lectureSearchResponse);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return myLectureList;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,8 @@ package com.edufocus.edufocus.qna.controller;
|
|||||||
|
|
||||||
import com.edufocus.edufocus.qna.entity.Qna;
|
import com.edufocus.edufocus.qna.entity.Qna;
|
||||||
import com.edufocus.edufocus.qna.service.QnaService;
|
import com.edufocus.edufocus.qna.service.QnaService;
|
||||||
|
import com.edufocus.edufocus.user.util.JWTUtil;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import okhttp3.Response;
|
import okhttp3.Response;
|
||||||
@ -18,12 +20,17 @@ import java.util.List;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class QnaController {
|
public class QnaController {
|
||||||
private final QnaService qnaService;
|
private final QnaService qnaService;
|
||||||
|
private final JWTUtil jwtUtil;
|
||||||
|
|
||||||
@PostMapping
|
@PostMapping
|
||||||
public ResponseEntity<Qna> createQna(@RequestBody Qna qna) {
|
public ResponseEntity<Qna> createQna(@RequestBody Qna qna , HttpServletRequest request) {
|
||||||
|
|
||||||
|
|
||||||
try{
|
try{
|
||||||
qnaService.createQna(qna);
|
String token = request.getHeader("Authorization");
|
||||||
|
Long userId = Long.parseLong(jwtUtil.getUserId(token));
|
||||||
|
|
||||||
|
qnaService.createQna(userId,qna);
|
||||||
return new ResponseEntity<>(qna, HttpStatus.CREATED);
|
return new ResponseEntity<>(qna, HttpStatus.CREATED);
|
||||||
|
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
|
@ -11,7 +11,7 @@ import java.util.List;
|
|||||||
@Service
|
@Service
|
||||||
public interface QnaService {
|
public interface QnaService {
|
||||||
|
|
||||||
void createQna(Qna qna) throws SQLException;
|
void createQna(Long id,Qna qna) throws SQLException;
|
||||||
void updateQna(Long id,Qna qna) throws SQLException;
|
void updateQna(Long id,Qna qna) throws SQLException;
|
||||||
void deleteQna(Long id) throws SQLException;
|
void deleteQna(Long id) throws SQLException;
|
||||||
Qna getQna(Long id) throws SQLException;
|
Qna getQna(Long id) throws SQLException;
|
||||||
|
@ -20,9 +20,10 @@ public class QnaServiceImpl implements QnaService{
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createQna(Qna qna) {
|
public void createQna(Long id,Qna qna) {
|
||||||
|
|
||||||
|
|
||||||
|
qna.setId(id);
|
||||||
qnaRepository.save(qna);
|
qnaRepository.save(qna);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,9 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
|||||||
import org.springframework.data.repository.query.Param;
|
import org.springframework.data.repository.query.Param;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public interface RegistrationRepository extends JpaRepository<Registration, Long> {
|
public interface RegistrationRepository extends JpaRepository<Registration, Long> {
|
||||||
|
List<Registration> findAllByUserId(@Param("userId") Long userId);
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,9 @@ import com.edufocus.edufocus.user.model.service.UserService;
|
|||||||
import com.edufocus.edufocus.user.util.JWTUtil;
|
import com.edufocus.edufocus.user.util.JWTUtil;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import jakarta.servlet.http.Cookie;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -48,7 +50,7 @@ public class UserController {
|
|||||||
@Operation(summary = "로그인", description = "아이디와 비밀번호를 이용하여 로그인 처리.")
|
@Operation(summary = "로그인", description = "아이디와 비밀번호를 이용하여 로그인 처리.")
|
||||||
@PostMapping("/login")
|
@PostMapping("/login")
|
||||||
public ResponseEntity<Map<String, Object>> login(
|
public ResponseEntity<Map<String, Object>> login(
|
||||||
@RequestBody @Parameter(description = "로그인 시 필요한 회원정보(아이디, 비밀번호).", required = true) User user) {
|
@RequestBody @Parameter(description = "로그인 시 필요한 회원정보(아이디, 비밀번호).", required = true) User user, HttpServletResponse response) {
|
||||||
Map<String, Object> resultMap = new HashMap<>();
|
Map<String, Object> resultMap = new HashMap<>();
|
||||||
HttpStatus status = HttpStatus.ACCEPTED;
|
HttpStatus status = HttpStatus.ACCEPTED;
|
||||||
try {
|
try {
|
||||||
@ -63,8 +65,18 @@ public class UserController {
|
|||||||
// JSON 으로 token 전달.
|
// JSON 으로 token 전달.
|
||||||
System.out.println(accessToken);
|
System.out.println(accessToken);
|
||||||
resultMap.put("access-token", accessToken);
|
resultMap.put("access-token", accessToken);
|
||||||
resultMap.put("refresh-token", refreshToken);
|
// resultMap.put("refresh-token", refreshToken);
|
||||||
|
|
||||||
|
// 쿠키 저장
|
||||||
|
Cookie refreshCookie = new Cookie("refresh-token", refreshToken);
|
||||||
|
refreshCookie.setPath("/");
|
||||||
|
refreshCookie.setHttpOnly(true);
|
||||||
|
refreshCookie.setSecure(true); // HTTPS에서만 전송되도록 설정
|
||||||
|
// refreshCookie.setSameSite(Cookie.SameSite.NONE); // Cross-Origin 요청에 대해 모두 전송
|
||||||
|
|
||||||
|
response.addCookie(refreshCookie);
|
||||||
|
|
||||||
|
// 쿠키저장
|
||||||
status = HttpStatus.CREATED;
|
status = HttpStatus.CREATED;
|
||||||
} else {
|
} else {
|
||||||
resultMap.put("message", "아이디 또는 패스워드를 확인해 주세요.");
|
resultMap.put("message", "아이디 또는 패스워드를 확인해 주세요.");
|
||||||
@ -78,7 +90,7 @@ public class UserController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "회원인증", description = "회원 정보를 담은 Token 을 반환한다.")
|
@Operation(summary = "회원인증", description = "회원 정보를 담은 Token 을 반환한다.")
|
||||||
@GetMapping("/info/{userId}")
|
@GetMapping("/auth/{userId}")
|
||||||
public ResponseEntity<Map<String, Object>> getInfo(
|
public ResponseEntity<Map<String, Object>> getInfo(
|
||||||
@PathVariable("userId") @Parameter(description = "인증할 회원의 아이디.", required = true) Long userId,
|
@PathVariable("userId") @Parameter(description = "인증할 회원의 아이디.", required = true) Long userId,
|
||||||
HttpServletRequest request) {
|
HttpServletRequest request) {
|
||||||
@ -129,19 +141,62 @@ public class UserController {
|
|||||||
|
|
||||||
@Operation(summary = "Access Token 재발급", description = "만료된 access token 을 재발급 받는다.")
|
@Operation(summary = "Access Token 재발급", description = "만료된 access token 을 재발급 받는다.")
|
||||||
@PostMapping("/refresh")
|
@PostMapping("/refresh")
|
||||||
public ResponseEntity<?> refreshToken(@RequestBody User user, HttpServletRequest request)
|
public ResponseEntity<?> refreshToken(HttpServletRequest request,HttpServletResponse response)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
|
|
||||||
|
// System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@");
|
||||||
|
// System.out.println(user.getUserId());
|
||||||
Map<String, Object> resultMap = new HashMap<>();
|
Map<String, Object> resultMap = new HashMap<>();
|
||||||
HttpStatus status = HttpStatus.ACCEPTED;
|
HttpStatus status = HttpStatus.ACCEPTED;
|
||||||
String token = request.getHeader("refreshToken");
|
|
||||||
log.debug("token : {}, memberDto : {}", token, user);
|
// String token = request.getHeader("refreshToken");
|
||||||
|
|
||||||
|
|
||||||
|
Cookie[] cookies = request.getCookies();
|
||||||
|
String token = null;
|
||||||
|
|
||||||
|
if (cookies != null) {
|
||||||
|
for (Cookie cookie : cookies) {
|
||||||
|
if (cookie.getName().equals("refresh-token")) {
|
||||||
|
token = cookie.getValue();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Long userId = Long.parseLong(jwtUtil.getUserId(token));
|
||||||
|
/// System.out.println(userId);
|
||||||
|
/// System.out.println("리프레쉬 토큰 (쿠키에서 받은거 "+token);
|
||||||
|
// log.debug("token : {}, memberDto : {}", token, user);
|
||||||
|
// System.out.println(jwtUtil.checkToken(token));
|
||||||
if (jwtUtil.checkToken(token)) {
|
if (jwtUtil.checkToken(token)) {
|
||||||
if (token.equals(userService.getRefreshToken(user.getId()))) {
|
|
||||||
String accessToken = jwtUtil.createAccessToken(String.valueOf(user.getId()));
|
// System.out.println(token);
|
||||||
|
// System.out.println(userService.getRefreshToken(userId));
|
||||||
|
//System.out.println("쿠키 토큰 , 디비 토큰 비교"+token.equals(userService.getRefreshToken(userId)));
|
||||||
|
if (token.equals(userService.getRefreshToken(userId))) {
|
||||||
|
System.out.println("!!");
|
||||||
|
String accessToken = jwtUtil.createAccessToken(String.valueOf(userId));
|
||||||
|
String refreshToken = jwtUtil.createRefreshToken(String.valueOf(userId));
|
||||||
|
|
||||||
log.debug("token : {}", accessToken);
|
log.debug("token : {}", accessToken);
|
||||||
log.debug("정상적으로 access token 재발급!!!");
|
log.debug("정상적으로 access token 재발급!!!");
|
||||||
resultMap.put("access-token", accessToken);
|
resultMap.put("access-token", accessToken);
|
||||||
|
|
||||||
|
|
||||||
|
// 바뀐 리프레시db저장
|
||||||
|
userService.saveRefreshToken(userId,refreshToken);
|
||||||
|
// 쿠키 저장
|
||||||
|
Cookie refreshCookie = new Cookie("refresh-token", refreshToken);
|
||||||
|
refreshCookie.setPath("/");
|
||||||
|
refreshCookie.setHttpOnly(true);
|
||||||
|
refreshCookie.setSecure(true); // HTTPS에서만 전송되도록 설정
|
||||||
|
// refreshCookie.setSameSite(Cookie.SameSite.NONE); // Cross-Origin 요청에 대해 모두 전송
|
||||||
|
|
||||||
|
response.addCookie(refreshCookie);
|
||||||
|
System.out.println("바뀐 리프레쉬랑 지금꺼 비교 "+ refreshToken.equals(token));
|
||||||
|
resultMap.put("access-token", accessToken);
|
||||||
status = HttpStatus.CREATED;
|
status = HttpStatus.CREATED;
|
||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log.debug("refresh token 도 사용 불가!!!!!!!");
|
log.debug("refresh token 도 사용 불가!!!!!!!");
|
||||||
@ -151,7 +206,7 @@ public class UserController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "회원 정보 조회", description = "토큰을 이용하여 회원 정보를 조회한다.")
|
@Operation(summary = "회원 정보 조회", description = "토큰을 이용하여 회원 정보를 조회한다.")
|
||||||
@GetMapping("/member")
|
@GetMapping("/userinfo")
|
||||||
public ResponseEntity<Map<String, Object>> getMember(HttpServletRequest request) {
|
public ResponseEntity<Map<String, Object>> getMember(HttpServletRequest request) {
|
||||||
Map<String, Object> resultMap = new HashMap<>();
|
Map<String, Object> resultMap = new HashMap<>();
|
||||||
HttpStatus status = HttpStatus.ACCEPTED;
|
HttpStatus status = HttpStatus.ACCEPTED;
|
||||||
|
@ -30,9 +30,10 @@ public class User {
|
|||||||
private String password;
|
private String password;
|
||||||
@Enumerated(EnumType.STRING) // 혹은 EnumType.ORDINAL
|
@Enumerated(EnumType.STRING) // 혹은 EnumType.ORDINAL
|
||||||
private UserRole role;
|
private UserRole role;
|
||||||
|
|
||||||
private String refreshToken;
|
private String refreshToken;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user