diff --git a/.env b/.env new file mode 100644 index 00000000..1666c252 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +JWT_SECRET=sFAt7RSBoe6nJ7cSuMFiRtqSLNLkWOfmrSzH0iKFLKvFHSG2VJ6Xn/uzFDDFqENR diff --git a/compose.yml b/compose.yml index ebc03525..b9058024 100644 --- a/compose.yml +++ b/compose.yml @@ -13,43 +13,28 @@ services: networks: - postgres restart: unless-stopped - pgadmin: - container_name: elearning-pgui - image: dpage/pgadmin4 - environment: - PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-pgadmin4@pgadmin.org} - PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin} - PGADMIN_CONFIG_SERVER_MODE: 'False' - volumes: - - pgadmin:/var/lib/pgadmin - ports: - - "5050:80" - networks: - - postgres - restart: unless-stopped - api: - image: thuanvn2002/elearning-be:latest - ports: - - "8082:8082" - environment: - - SPRING_PROFILES_ACTIVE=prod - networks: - - postgres - depends_on: - - postgres - ui: - image: thuanvn2002/elearning-fe:latest - ports: - - "80:80" - networks: - - postgres - restart: unless-stopped +# api: +# image: thuanvn2002/elearning-be:latest +# ports: +# - "8082:8082" +# environment: +# - SPRING_PROFILES_ACTIVE=prod +# networks: +# - postgres +# depends_on: +# - postgres +# ui: +# image: thuanvn2002/elearning-fe:latest +# ports: +# - "80:80" +# networks: +# - postgres +# restart: unless-stopped networks: postgres: driver: bridge volumes: db_data: - pgadmin: diff --git a/pom.xml b/pom.xml index b2d0a95d..b7bb68ec 100644 --- a/pom.xml +++ b/pom.xml @@ -121,6 +121,12 @@ springdoc-openapi-starter-webmvc-ui ${springdoc.version} + + me.paulschwarz + spring-dotenv + 3.0.0 + + diff --git a/src/main/java/com/backend/elearning/configuration/DatabaseAutoConfig.java b/src/main/java/com/backend/elearning/configuration/DatabaseAutoConfig.java index 4725e8ae..4ad3b468 100644 --- a/src/main/java/com/backend/elearning/configuration/DatabaseAutoConfig.java +++ b/src/main/java/com/backend/elearning/configuration/DatabaseAutoConfig.java @@ -1,24 +1,13 @@ package com.backend.elearning.configuration; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.data.domain.AuditorAware; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContextHolder; import java.util.Optional; @Configuration -@EnableJpaAuditing(auditorAwareRef = "auditorAware") +@EnableJpaAuditing public class DatabaseAutoConfig { - @Bean - public AuditorAware auditorAware() { - return () -> { - Authentication auth = SecurityContextHolder.getContext().getAuthentication(); - if (auth == null) return Optional.of(""); - return Optional.of(auth.getName()); - }; - } + } diff --git a/src/main/java/com/backend/elearning/domain/answer/Answer.java b/src/main/java/com/backend/elearning/domain/answer/Answer.java index d58cc3d2..af949842 100644 --- a/src/main/java/com/backend/elearning/domain/answer/Answer.java +++ b/src/main/java/com/backend/elearning/domain/answer/Answer.java @@ -13,7 +13,6 @@ @Getter @Setter @Builder -@EntityListeners(value = CustomAuditingEntityListener.class) public class Answer extends AbstractAuditEntity { @Id diff --git a/src/main/java/com/backend/elearning/domain/auth/AuthenticationService.java b/src/main/java/com/backend/elearning/domain/auth/AuthenticationService.java index e4131196..0f2516dd 100644 --- a/src/main/java/com/backend/elearning/domain/auth/AuthenticationService.java +++ b/src/main/java/com/backend/elearning/domain/auth/AuthenticationService.java @@ -169,8 +169,6 @@ public AuthenticationVm register(RegistrationPostVm request) { .build(); student.setVerificationCode(generateVerificationCode()); student.setVerificationCodeExpiresAt(LocalDateTime.now().plusMinutes(15)); - student.setCreatedAt(LocalDateTime.now()); - student.setUpdatedAt(LocalDateTime.now()); studentRepository.saveAndFlush(student); sendVerificationEmail(student); String token = jwtUtil.issueToken(student.getEmail(), ERole.ROLE_STUDENT.name()); @@ -253,7 +251,6 @@ public void updatePassword(AuthenticationPostVm request) { .findByEmail(email) .orElseThrow(() -> new NotFoundException(Constants.ERROR_CODE.USER_NOT_FOUND, request.email())); student.setPassword(passwordEncoder.encode(request.password())); - student.setUpdatedAt(LocalDateTime.now()); studentRepository.save(student); } catch (Exception e) { throw new BadRequestException(e.getMessage()); diff --git a/src/main/java/com/backend/elearning/domain/category/Category.java b/src/main/java/com/backend/elearning/domain/category/Category.java index 28ccd8ef..638bc6be 100644 --- a/src/main/java/com/backend/elearning/domain/category/Category.java +++ b/src/main/java/com/backend/elearning/domain/category/Category.java @@ -16,7 +16,6 @@ @Getter @Setter @Builder -@EntityListeners(value = CustomAuditingEntityListener.class) public class Category extends AbstractAuditEntity { @Id diff --git a/src/main/java/com/backend/elearning/domain/category/CategoryServiceImpl.java b/src/main/java/com/backend/elearning/domain/category/CategoryServiceImpl.java index b7601d0a..5617bcf1 100644 --- a/src/main/java/com/backend/elearning/domain/category/CategoryServiceImpl.java +++ b/src/main/java/com/backend/elearning/domain/category/CategoryServiceImpl.java @@ -64,8 +64,6 @@ public CategoryVM create(CategoryPostVM categoryPostVM) { .description(categoryPostVM.description()) .publish(categoryPostVM.isPublish()) .build(); - category.setCreatedAt(LocalDateTime.now()); - category.setUpdatedAt(LocalDateTime.now()); if (categoryPostVM.parentId() != null) { Category parent = categoryRepository.findById(categoryPostVM.parentId()).orElseThrow(() -> new NotFoundException(Constants.ERROR_CODE.CATEGORY_NOT_FOUND, categoryPostVM.parentId())); @@ -103,7 +101,6 @@ public void update(CategoryPostVM categoryPutVM, Integer categoryId) { category.setName(categoryPutVM.name()); category.setDescription(categoryPutVM.description()); category.setPublish(categoryPutVM.isPublish()); - category.setUpdatedAt(LocalDateTime.now()); if (categoryPutVM.parentId() == null) { category.setParent(null); } else { diff --git a/src/main/java/com/backend/elearning/domain/classroom/ClassroomServiceImpl.java b/src/main/java/com/backend/elearning/domain/classroom/ClassroomServiceImpl.java index 7dbb8e96..9cae3d3e 100644 --- a/src/main/java/com/backend/elearning/domain/classroom/ClassroomServiceImpl.java +++ b/src/main/java/com/backend/elearning/domain/classroom/ClassroomServiceImpl.java @@ -107,7 +107,6 @@ private List getByClassroom(Classroom classroom) { referenceGetVM.setId(reference.getId()); referenceGetVM.setType(EventType.reference); referenceGetVM.setDescription(reference.getDescription()); - referenceGetVM.setCreatedAt(reference.getCreatedAt()); List files = referenceFileService.getByReferenceId(reference.getId()); referenceGetVM.setFiles(files); events.add(referenceGetVM); @@ -122,7 +121,6 @@ private List getByClassroom(Classroom classroom) { exerciseGetVM.setDescription(exercise.getDescription()); exerciseGetVM.setDeadline(convertLocalDateTimeToString(exercise.getSubmission_deadline())); exerciseGetVM.setType(EventType.exercise); - exerciseGetVM.setCreatedAt(exercise.getCreatedAt()); List files = exerciseFileService.getByExerciseId(exercise.getId()); exerciseGetVM.setFiles(files); events.add(exerciseGetVM); diff --git a/src/main/java/com/backend/elearning/domain/common/AbstractAuditEntity.java b/src/main/java/com/backend/elearning/domain/common/AbstractAuditEntity.java index 74282209..71e94e17 100644 --- a/src/main/java/com/backend/elearning/domain/common/AbstractAuditEntity.java +++ b/src/main/java/com/backend/elearning/domain/common/AbstractAuditEntity.java @@ -5,17 +5,16 @@ import jakarta.persistence.MappedSuperclass; import lombok.Getter; import lombok.Setter; -import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; -import org.springframework.data.annotation.LastModifiedBy; import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.time.LocalDateTime; @MappedSuperclass @Getter @Setter -@EntityListeners(CustomAuditingEntityListener.class) +@EntityListeners(AuditingEntityListener.class) public class AbstractAuditEntity { @CreatedDate diff --git a/src/main/java/com/backend/elearning/domain/common/CustomAuditingEntityListener.java b/src/main/java/com/backend/elearning/domain/common/CustomAuditingEntityListener.java index ca5e7530..02590e39 100644 --- a/src/main/java/com/backend/elearning/domain/common/CustomAuditingEntityListener.java +++ b/src/main/java/com/backend/elearning/domain/common/CustomAuditingEntityListener.java @@ -15,6 +15,4 @@ public CustomAuditingEntityListener(ObjectFactory handler) { public CustomAuditingEntityListener() { } - - } diff --git a/src/main/java/com/backend/elearning/domain/coupon/Coupon.java b/src/main/java/com/backend/elearning/domain/coupon/Coupon.java index 0560a41c..b6d6aac2 100644 --- a/src/main/java/com/backend/elearning/domain/coupon/Coupon.java +++ b/src/main/java/com/backend/elearning/domain/coupon/Coupon.java @@ -1,4 +1,5 @@ package com.backend.elearning.domain.coupon; +import com.backend.elearning.domain.common.AbstractAuditEntity; import com.backend.elearning.domain.order.Order; import jakarta.persistence.*; import lombok.*; @@ -14,7 +15,7 @@ @Setter @Getter @Builder -public class Coupon { +public class Coupon extends AbstractAuditEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/src/main/java/com/backend/elearning/domain/course/Course.java b/src/main/java/com/backend/elearning/domain/course/Course.java index 8d40e457..f3145e83 100644 --- a/src/main/java/com/backend/elearning/domain/course/Course.java +++ b/src/main/java/com/backend/elearning/domain/course/Course.java @@ -24,7 +24,6 @@ @Getter @Setter @Builder -@EntityListeners(value = CustomAuditingEntityListener.class) public class Course extends AbstractAuditEntity { @Id @@ -44,7 +43,7 @@ public class Course extends AbstractAuditEntity { private String[] targetAudiences; - @Column(length = 1000) + @Column(columnDefinition = "TEXT") private String description; private String imageId; diff --git a/src/main/java/com/backend/elearning/domain/course/CourseServiceImpl.java b/src/main/java/com/backend/elearning/domain/course/CourseServiceImpl.java index 4aa833e9..e7734364 100644 --- a/src/main/java/com/backend/elearning/domain/course/CourseServiceImpl.java +++ b/src/main/java/com/backend/elearning/domain/course/CourseServiceImpl.java @@ -146,8 +146,6 @@ public CourseVM create(CoursePostVM coursePostVM) { if (!course.isFree()) { course.setPrice(coursePostVM.price()); } - course.setCreatedAt(LocalDateTime.now()); - course.setUpdatedAt(LocalDateTime.now()); return CourseVM.fromModel(courseRepository.save(course), new ArrayList<>(),0, 0.0,0,"", null, false, 0L); } @@ -178,7 +176,6 @@ public CourseVM update(CoursePostVM coursePutVM, Long userId, Long courseId) { oldCourse.setTargetAudiences(coursePutVM.targetAudiences()); oldCourse.setFree(coursePutVM.free()); oldCourse.setStatus(CourseStatus.UNPUBLISHED); - oldCourse.setUpdatedAt(LocalDateTime.now()); if (!coursePutVM.free()) { oldCourse.setPrice(coursePutVM.price()); } diff --git a/src/main/java/com/backend/elearning/domain/excercise/ExerciseServiceImpl.java b/src/main/java/com/backend/elearning/domain/excercise/ExerciseServiceImpl.java index 77e1b73d..97f80b1e 100644 --- a/src/main/java/com/backend/elearning/domain/excercise/ExerciseServiceImpl.java +++ b/src/main/java/com/backend/elearning/domain/excercise/ExerciseServiceImpl.java @@ -38,8 +38,6 @@ public ExerciseVM create(ExercisePostVM exercisePostVM) { .classroom(classroom) .build(); - exercise.setCreatedAt(LocalDateTime.now()); - exercise.setUpdatedAt(LocalDateTime.now()); Exercise savedExercise = exerciseRepository.saveAndFlush(exercise); return ExerciseVM.fromModel(savedExercise); } @@ -50,7 +48,6 @@ public ExerciseVM update(ExercisePostVM exercisePostVM, Long referenceId) { Exercise exercise = exerciseRepository.findById(referenceId).orElseThrow(); exercise.setTitle(exercisePostVM.title()); exercise.setDescription(exercisePostVM.description()); - exercise.setUpdatedAt(LocalDateTime.now()); exercise.setSubmission_deadline(deadline); Exercise savedExercise = exerciseRepository.saveAndFlush(exercise); return ExerciseVM.fromModel(savedExercise); diff --git a/src/main/java/com/backend/elearning/domain/exerciseFile/ExerciseFile.java b/src/main/java/com/backend/elearning/domain/exerciseFile/ExerciseFile.java index a3cd9383..c12cc04a 100644 --- a/src/main/java/com/backend/elearning/domain/exerciseFile/ExerciseFile.java +++ b/src/main/java/com/backend/elearning/domain/exerciseFile/ExerciseFile.java @@ -1,5 +1,6 @@ package com.backend.elearning.domain.exerciseFile; +import com.backend.elearning.domain.common.AbstractAuditEntity; import com.backend.elearning.domain.excercise.Exercise; import com.backend.elearning.domain.reference.Reference; import com.backend.elearning.domain.student.Student; diff --git a/src/main/java/com/backend/elearning/domain/lecture/Lecture.java b/src/main/java/com/backend/elearning/domain/lecture/Lecture.java index a73847bd..c93713cd 100644 --- a/src/main/java/com/backend/elearning/domain/lecture/Lecture.java +++ b/src/main/java/com/backend/elearning/domain/lecture/Lecture.java @@ -14,7 +14,6 @@ @Setter @Builder @ToString -@EntityListeners(value = CustomAuditingEntityListener.class) public class Lecture extends AbstractAuditEntity { @Id diff --git a/src/main/java/com/backend/elearning/domain/lecture/LectureServiceImpl.java b/src/main/java/com/backend/elearning/domain/lecture/LectureServiceImpl.java index 3dcf73ee..13c772bb 100644 --- a/src/main/java/com/backend/elearning/domain/lecture/LectureServiceImpl.java +++ b/src/main/java/com/backend/elearning/domain/lecture/LectureServiceImpl.java @@ -37,8 +37,6 @@ public LectureVm create(LecturePostVM lecturePostVM) { .number(lecturePostVM.number()) .section(section) .build(); - lecture.setCreatedAt(LocalDateTime.now()); - lecture.setUpdatedAt(LocalDateTime.now()); Lecture savedLecture = lectureRepository.save(lecture); LectureVm lectureVm = new LectureVm(savedLecture); return lectureVm; @@ -58,7 +56,6 @@ public LectureVm update(LecturePostVM lecturePutVM, Long lectureId) { lecture.setLectureDetails(lecturePutVM.lectureDetails()); lecture.setDuration(lecturePutVM.duration()); Lecture savedLecture = lectureRepository.saveAndFlush(lecture); - lecture.setUpdatedAt(LocalDateTime.now()); LectureVm lectureVm = new LectureVm(savedLecture); return lectureVm; } diff --git a/src/main/java/com/backend/elearning/domain/meeting/MeetingServiceImpl.java b/src/main/java/com/backend/elearning/domain/meeting/MeetingServiceImpl.java index 8178c22d..0e746801 100644 --- a/src/main/java/com/backend/elearning/domain/meeting/MeetingServiceImpl.java +++ b/src/main/java/com/backend/elearning/domain/meeting/MeetingServiceImpl.java @@ -30,8 +30,6 @@ public MeetingVM create(MeetingPostVM meetingPostVM) { .endTime(endTime) .classroom(classroom) .build(); - meeting.setCreatedAt(LocalDateTime.now()); - meeting.setUpdatedAt(LocalDateTime.now()); Meeting savedMeeting = meetingRepository.saveAndFlush(meeting); return MeetingVM.fromModel(savedMeeting); } @@ -44,7 +42,6 @@ public MeetingVM update(MeetingPostVM meetingPostVM, Long meetingId) { meeting.setCode(meetingPostVM.code()); meeting.setStartTime(startTime); meeting.setEndTime(endTime); - meeting.setUpdatedAt(LocalDateTime.now()); Meeting updatedMeeting = meetingRepository.saveAndFlush(meeting); return MeetingVM.fromModel(updatedMeeting); } diff --git a/src/main/java/com/backend/elearning/domain/note/Note.java b/src/main/java/com/backend/elearning/domain/note/Note.java index c531cece..eb5673c6 100644 --- a/src/main/java/com/backend/elearning/domain/note/Note.java +++ b/src/main/java/com/backend/elearning/domain/note/Note.java @@ -1,5 +1,6 @@ package com.backend.elearning.domain.note; +import com.backend.elearning.domain.common.AbstractAuditEntity; import com.backend.elearning.domain.lecture.Lecture; import com.backend.elearning.domain.student.Student; import jakarta.persistence.*; @@ -12,7 +13,7 @@ @Setter @Getter @Builder -public class Note { +public class Note extends AbstractAuditEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/src/main/java/com/backend/elearning/domain/order/Order.java b/src/main/java/com/backend/elearning/domain/order/Order.java index 8d042fee..e56a97e5 100644 --- a/src/main/java/com/backend/elearning/domain/order/Order.java +++ b/src/main/java/com/backend/elearning/domain/order/Order.java @@ -1,5 +1,6 @@ package com.backend.elearning.domain.order; +import com.backend.elearning.domain.common.AbstractAuditEntity; import com.backend.elearning.domain.coupon.Coupon; import com.backend.elearning.domain.student.Student; import jakarta.persistence.*; @@ -16,7 +17,7 @@ @Setter @Getter @Builder -public class Order { +public class Order extends AbstractAuditEntity { @Id @@ -31,7 +32,6 @@ public class Order { @JoinColumn(name = "coupon_id") private Coupon coupon; - private LocalDateTime createdAt; @Enumerated(EnumType.STRING) private EOrderStatus status; diff --git a/src/main/java/com/backend/elearning/domain/order/impl/OrderServiceImpl.java b/src/main/java/com/backend/elearning/domain/order/impl/OrderServiceImpl.java index 43bf6001..6e160eeb 100644 --- a/src/main/java/com/backend/elearning/domain/order/impl/OrderServiceImpl.java +++ b/src/main/java/com/backend/elearning/domain/order/impl/OrderServiceImpl.java @@ -63,7 +63,6 @@ public Long createOrder(OrderPostDto orderPostDto) { Order order = Order.builder() .status(EOrderStatus.PENDING) .student(student) - .createdAt(LocalDateTime.now()) .build(); if (coupon != null) { order.setCoupon(coupon); diff --git a/src/main/java/com/backend/elearning/domain/promotion/Promotion.java b/src/main/java/com/backend/elearning/domain/promotion/Promotion.java index 9de962a2..2ad52f9b 100644 --- a/src/main/java/com/backend/elearning/domain/promotion/Promotion.java +++ b/src/main/java/com/backend/elearning/domain/promotion/Promotion.java @@ -1,5 +1,6 @@ package com.backend.elearning.domain.promotion; +import com.backend.elearning.domain.common.AbstractAuditEntity; import com.backend.elearning.domain.course.Course; import jakarta.persistence.*; import lombok.*; @@ -15,7 +16,7 @@ @Getter @Setter @Builder -public class Promotion { +public class Promotion extends AbstractAuditEntity { @Id diff --git a/src/main/java/com/backend/elearning/domain/questionLecture/QuestionLectureServiceImpl.java b/src/main/java/com/backend/elearning/domain/questionLecture/QuestionLectureServiceImpl.java index 9eb6b4bc..2911fe27 100644 --- a/src/main/java/com/backend/elearning/domain/questionLecture/QuestionLectureServiceImpl.java +++ b/src/main/java/com/backend/elearning/domain/questionLecture/QuestionLectureServiceImpl.java @@ -51,8 +51,6 @@ public QuestionLectureVM create(QuestionLecturePostVM questionLecturePostVM) { .lecture(lecture) .student(student) .build(); - questionLecture.setCreatedAt(LocalDateTime.now()); - questionLecture.setUpdatedAt(LocalDateTime.now()); QuestionLecture savedQuestionLecture = questionLectureRepo.saveAndFlush(questionLecture); return QuestionLectureVM.fromModel(savedQuestionLecture); @@ -64,7 +62,6 @@ public QuestionLectureVM update(QuestionLecturePostVM questionLecturePostVM, Lon QuestionLecture questionLecture = questionLectureRepo.findById(questionLectureId).orElseThrow(); questionLecture.setTitle(questionLecturePostVM.title()); questionLecture.setDescription(questionLecturePostVM.description()); - questionLecture.setUpdatedAt(LocalDateTime.now()); QuestionLecture savedQuestionLecture = questionLectureRepo.saveAndFlush(questionLecture); return QuestionLectureVM.fromModel(savedQuestionLecture); diff --git a/src/main/java/com/backend/elearning/domain/questionLecture/studentAnswer/StudentAnswerServiceImpl.java b/src/main/java/com/backend/elearning/domain/questionLecture/studentAnswer/StudentAnswerServiceImpl.java index 02b51bf6..763d9173 100644 --- a/src/main/java/com/backend/elearning/domain/questionLecture/studentAnswer/StudentAnswerServiceImpl.java +++ b/src/main/java/com/backend/elearning/domain/questionLecture/studentAnswer/StudentAnswerServiceImpl.java @@ -37,8 +37,6 @@ public AnswerLecture create(StudentAnswerPostVM studentAnswerPostVM) { .student(student) .questionLecture(questionLecture) .build(); - studentAnswer.setCreatedAt(LocalDateTime.now()); - studentAnswer.setUpdatedAt(LocalDateTime.now()); StudentAnswer savedStudentAnswer = studentAnswerRepo.saveAndFlush(studentAnswer); return AnswerLecture.fromModelStudent(savedStudentAnswer); @@ -48,7 +46,6 @@ public AnswerLecture create(StudentAnswerPostVM studentAnswerPostVM) { public AnswerLecture update(StudentAnswerPostVM studentAnswerPostVM, Long studentAnswerId) { StudentAnswer studentAnswer = studentAnswerRepo.findById(studentAnswerId).orElseThrow() ; studentAnswer.setContent(studentAnswerPostVM.content()); - studentAnswer.setUpdatedAt(LocalDateTime.now()); StudentAnswer savedStudentAnswer = studentAnswerRepo.saveAndFlush(studentAnswer); return AnswerLecture.fromModelStudent(savedStudentAnswer); } diff --git a/src/main/java/com/backend/elearning/domain/questionLecture/userAnswer/UserAnswerServiceImpl.java b/src/main/java/com/backend/elearning/domain/questionLecture/userAnswer/UserAnswerServiceImpl.java index b03f5aae..9664e311 100644 --- a/src/main/java/com/backend/elearning/domain/questionLecture/userAnswer/UserAnswerServiceImpl.java +++ b/src/main/java/com/backend/elearning/domain/questionLecture/userAnswer/UserAnswerServiceImpl.java @@ -35,8 +35,6 @@ public AnswerLecture create(UserAnswerPostVM userAnswerPostVM) { .user(user) .questionLecture(questionLecture) .build(); - userAnswer.setCreatedAt(LocalDateTime.now()); - userAnswer.setUpdatedAt(LocalDateTime.now()); UserAnswer savedUserAnswer = userAnswerRepo.saveAndFlush(userAnswer); return AnswerLecture.fromModelUser(savedUserAnswer); @@ -46,7 +44,6 @@ public AnswerLecture create(UserAnswerPostVM userAnswerPostVM) { public AnswerLecture update(UserAnswerPostVM userAnswerPostVM, Long userAnswerId) { UserAnswer userAnswer = userAnswerRepo.findById(userAnswerId).orElseThrow(); userAnswer.setContent(userAnswerPostVM.content()); - userAnswer.setUpdatedAt(LocalDateTime.now()); UserAnswer savedUserAnswer = userAnswerRepo.saveAndFlush(userAnswer); return AnswerLecture.fromModelUser(savedUserAnswer); } diff --git a/src/main/java/com/backend/elearning/domain/quiz/Quiz.java b/src/main/java/com/backend/elearning/domain/quiz/Quiz.java index 002b8eb4..25034dd8 100644 --- a/src/main/java/com/backend/elearning/domain/quiz/Quiz.java +++ b/src/main/java/com/backend/elearning/domain/quiz/Quiz.java @@ -17,7 +17,6 @@ @Getter @Setter @Builder -@EntityListeners(value = CustomAuditingEntityListener.class) public class Quiz extends AbstractAuditEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/src/main/java/com/backend/elearning/domain/quiz/QuizServiceImpl.java b/src/main/java/com/backend/elearning/domain/quiz/QuizServiceImpl.java index 7e4664a8..1037f1a7 100644 --- a/src/main/java/com/backend/elearning/domain/quiz/QuizServiceImpl.java +++ b/src/main/java/com/backend/elearning/domain/quiz/QuizServiceImpl.java @@ -33,8 +33,6 @@ public QuizVM create(QuizPostVM quizPostVM) { .description(quizPostVM.description()) .section(section) .build(); - quiz.setCreatedAt(LocalDateTime.now()); - quiz.setUpdatedAt(LocalDateTime.now()); Quiz savedQuiz = quizRepository.save(quiz); return new QuizVM(savedQuiz); } @@ -50,7 +48,6 @@ public QuizVM update(QuizPostVM quizPutVM, Long quizId) { quiz.setTitle(quizPutVM.title()); quiz.setDescription(quizPutVM.description()); quiz.setNumber(quizPutVM.number()); - quiz.setUpdatedAt(LocalDateTime.now()); Quiz savedQuiz = quizRepository.saveAndFlush(quiz); return new QuizVM(savedQuiz); } diff --git a/src/main/java/com/backend/elearning/domain/reference/ReferenceServiceImpl.java b/src/main/java/com/backend/elearning/domain/reference/ReferenceServiceImpl.java index 187fd0b4..c0402259 100644 --- a/src/main/java/com/backend/elearning/domain/reference/ReferenceServiceImpl.java +++ b/src/main/java/com/backend/elearning/domain/reference/ReferenceServiceImpl.java @@ -28,8 +28,6 @@ public ReferenceVM create(ReferencePostVM referencePostVM) { .classroom(classroom) .build(); - reference.setCreatedAt(LocalDateTime.now()); - reference.setUpdatedAt(LocalDateTime.now()); Reference savedReference = referenceRepository.saveAndFlush(reference); return ReferenceVM.fromModel(savedReference); } @@ -38,7 +36,6 @@ public ReferenceVM create(ReferencePostVM referencePostVM) { public ReferenceVM update(ReferencePostVM referencePostVM, Long referenceId) { Reference reference = referenceRepository.findById(referenceId).orElseThrow(); reference.setDescription(referencePostVM.description()); - reference.setUpdatedAt(LocalDateTime.now()); Reference savedReference = referenceRepository.saveAndFlush(reference); return ReferenceVM.fromModel(savedReference); } diff --git a/src/main/java/com/backend/elearning/domain/review/Review.java b/src/main/java/com/backend/elearning/domain/review/Review.java index e60b391d..22a90410 100644 --- a/src/main/java/com/backend/elearning/domain/review/Review.java +++ b/src/main/java/com/backend/elearning/domain/review/Review.java @@ -1,5 +1,6 @@ package com.backend.elearning.domain.review; +import com.backend.elearning.domain.common.AbstractAuditEntity; import com.backend.elearning.domain.course.Course; import com.backend.elearning.domain.student.Student; import jakarta.persistence.*; @@ -14,7 +15,7 @@ @AllArgsConstructor @NoArgsConstructor @Builder -public class Review { +public class Review extends AbstractAuditEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -37,10 +38,4 @@ public class Review { @JoinColumn(name = "student_id") private Student student; - @Column(name = "created_at") - protected LocalDateTime createdAt; - - - @Column(name = "updated_at") - protected LocalDateTime updatedAt; } diff --git a/src/main/java/com/backend/elearning/domain/review/ReviewServiceImpl.java b/src/main/java/com/backend/elearning/domain/review/ReviewServiceImpl.java index 8f489724..8619fce0 100644 --- a/src/main/java/com/backend/elearning/domain/review/ReviewServiceImpl.java +++ b/src/main/java/com/backend/elearning/domain/review/ReviewServiceImpl.java @@ -59,8 +59,6 @@ public ReviewVM createReviewForProduct(ReviewPostVM reviewPost) { .course(course) .content(reviewPost.content()) .ratingStar(reviewPost.ratingStar()) - .createdAt(LocalDateTime.now()) - .updatedAt(LocalDateTime.now()) .build(); Review savedReview = reviewRepository.save(review); diff --git a/src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroom.java b/src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroom.java similarity index 71% rename from src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroom.java rename to src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroom.java index 73ed3973..2e660c31 100644 --- a/src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroom.java +++ b/src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroom.java @@ -1,7 +1,7 @@ -package com.backend.elearning.domain.review_classroom; +package com.backend.elearning.domain.reviewClassroom; import com.backend.elearning.domain.classroom.Classroom; -import com.backend.elearning.domain.course.Course; +import com.backend.elearning.domain.common.AbstractAuditEntity; import com.backend.elearning.domain.student.Student; import jakarta.persistence.*; import lombok.*; @@ -15,7 +15,7 @@ @AllArgsConstructor @NoArgsConstructor @Builder -public class ReviewClassroom { +public class ReviewClassroom extends AbstractAuditEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -35,11 +35,4 @@ public class ReviewClassroom { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "student_id") private Student student; - - @Column(name = "created_at") - protected LocalDateTime createdAt; - - - @Column(name = "updated_at") - protected LocalDateTime updatedAt; } diff --git a/src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomController.java b/src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomController.java similarity index 96% rename from src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomController.java rename to src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomController.java index 5501e99a..dcd5c217 100644 --- a/src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomController.java +++ b/src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomController.java @@ -1,4 +1,4 @@ -package com.backend.elearning.domain.review_classroom; +package com.backend.elearning.domain.reviewClassroom; import jakarta.validation.Valid; import org.springframework.http.ResponseEntity; diff --git a/src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomGetVM.java b/src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomGetVM.java similarity index 83% rename from src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomGetVM.java rename to src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomGetVM.java index 3a907d06..ba7c1348 100644 --- a/src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomGetVM.java +++ b/src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomGetVM.java @@ -1,6 +1,5 @@ -package com.backend.elearning.domain.review_classroom; +package com.backend.elearning.domain.reviewClassroom; -import com.backend.elearning.domain.review.Review; import com.backend.elearning.utils.DateTimeUtils; public record ReviewClassroomGetVM ( diff --git a/src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomPostVM.java b/src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomPostVM.java similarity index 84% rename from src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomPostVM.java rename to src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomPostVM.java index 93dc1f0c..de55302c 100644 --- a/src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomPostVM.java +++ b/src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomPostVM.java @@ -1,4 +1,4 @@ -package com.backend.elearning.domain.review_classroom; +package com.backend.elearning.domain.reviewClassroom; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomRepo.java b/src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomRepo.java similarity index 81% rename from src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomRepo.java rename to src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomRepo.java index e6f87abe..ea2cf293 100644 --- a/src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomRepo.java +++ b/src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomRepo.java @@ -1,8 +1,5 @@ -package com.backend.elearning.domain.review_classroom; +package com.backend.elearning.domain.reviewClassroom; -import com.backend.elearning.domain.review.Review; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; diff --git a/src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomService.java b/src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomService.java similarity index 85% rename from src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomService.java rename to src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomService.java index 26e2e222..67ecba6a 100644 --- a/src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomService.java +++ b/src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomService.java @@ -1,4 +1,4 @@ -package com.backend.elearning.domain.review_classroom; +package com.backend.elearning.domain.reviewClassroom; diff --git a/src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomServiceImpl.java b/src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomServiceImpl.java similarity index 92% rename from src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomServiceImpl.java rename to src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomServiceImpl.java index 5c80da6d..1fae7593 100644 --- a/src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomServiceImpl.java +++ b/src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomServiceImpl.java @@ -1,9 +1,7 @@ -package com.backend.elearning.domain.review_classroom; +package com.backend.elearning.domain.reviewClassroom; import com.backend.elearning.domain.classroom.Classroom; import com.backend.elearning.domain.classroom.ClassroomRepository; -import com.backend.elearning.domain.review.Review; -import com.backend.elearning.domain.review.ReviewVM; import com.backend.elearning.domain.student.Student; import com.backend.elearning.domain.student.StudentRepository; import com.backend.elearning.exception.NotFoundException; @@ -40,8 +38,6 @@ public ReviewClassroomVM create(ReviewClassroomPostVM reviewPost) { .classroom(classroom) .content(reviewPost.content()) .ratingStar(reviewPost.ratingStar()) - .createdAt(LocalDateTime.now()) - .updatedAt(LocalDateTime.now()) .build(); ReviewClassroom savedReview = reviewClassroomRepo.save(review); return ReviewClassroomVM.fromModel(savedReview); diff --git a/src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomVM.java b/src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomVM.java similarity index 87% rename from src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomVM.java rename to src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomVM.java index e46381e0..3e2747e2 100644 --- a/src/main/java/com/backend/elearning/domain/review_classroom/ReviewClassroomVM.java +++ b/src/main/java/com/backend/elearning/domain/reviewClassroom/ReviewClassroomVM.java @@ -1,7 +1,5 @@ -package com.backend.elearning.domain.review_classroom; +package com.backend.elearning.domain.reviewClassroom; -import com.backend.elearning.domain.review.Review; -import com.backend.elearning.domain.review.ReviewVM; import com.backend.elearning.domain.student.Student; import com.backend.elearning.domain.user.UserGetVM; import com.backend.elearning.utils.DateTimeUtils; diff --git a/src/main/java/com/backend/elearning/domain/section/Section.java b/src/main/java/com/backend/elearning/domain/section/Section.java index c7c3e17e..55efbc5f 100644 --- a/src/main/java/com/backend/elearning/domain/section/Section.java +++ b/src/main/java/com/backend/elearning/domain/section/Section.java @@ -19,7 +19,6 @@ @Setter @ToString @Builder -@EntityListeners(value = CustomAuditingEntityListener.class) public class Section extends AbstractAuditEntity { @Id diff --git a/src/main/java/com/backend/elearning/domain/student/Student.java b/src/main/java/com/backend/elearning/domain/student/Student.java index 53c203de..3d855efe 100644 --- a/src/main/java/com/backend/elearning/domain/student/Student.java +++ b/src/main/java/com/backend/elearning/domain/student/Student.java @@ -20,13 +20,12 @@ import java.util.List; @Entity -@Table(name = "student") @AllArgsConstructor @NoArgsConstructor @Getter @Setter @Builder -@EntityListeners(value = CustomAuditingEntityListener.class) +@Table(name = "student") public class Student extends AbstractAuditEntity implements UserDetails { @Id diff --git a/src/main/java/com/backend/elearning/domain/student/StudentServiceImpl.java b/src/main/java/com/backend/elearning/domain/student/StudentServiceImpl.java index b6eb847d..279bfd66 100644 --- a/src/main/java/com/backend/elearning/domain/student/StudentServiceImpl.java +++ b/src/main/java/com/backend/elearning/domain/student/StudentServiceImpl.java @@ -59,8 +59,6 @@ public UserVm updateProfileStudent(StudentPutVM studentPutVM) { student.setEmail(studentPutVM.email()); student.setFirstName(studentPutVM.firstName()); student.setLastName(studentPutVM.lastName()); - student.setCreatedAt(LocalDateTime.now()); - student.setUpdatedAt(LocalDateTime.now()); if (studentPutVM.gender() != null) { student.setGender(EGender.valueOf(studentPutVM.gender())); } diff --git a/src/main/java/com/backend/elearning/domain/topic/Topic.java b/src/main/java/com/backend/elearning/domain/topic/Topic.java index a0c493f4..354ec55d 100644 --- a/src/main/java/com/backend/elearning/domain/topic/Topic.java +++ b/src/main/java/com/backend/elearning/domain/topic/Topic.java @@ -16,7 +16,6 @@ @Getter @Setter @Builder -@EntityListeners(value = CustomAuditingEntityListener.class) public class Topic extends AbstractAuditEntity { @Id diff --git a/src/main/java/com/backend/elearning/domain/topic/TopicServiceImpl.java b/src/main/java/com/backend/elearning/domain/topic/TopicServiceImpl.java index 1db8c32a..70e16267 100644 --- a/src/main/java/com/backend/elearning/domain/topic/TopicServiceImpl.java +++ b/src/main/java/com/backend/elearning/domain/topic/TopicServiceImpl.java @@ -73,8 +73,6 @@ public TopicVM create(TopicPostVM topicPostVM) { .description(topicPostVM.description()) .publish(topicPostVM.isPublish()) .build(); - topic.setCreatedAt(LocalDateTime.now()); - topic.setUpdatedAt(LocalDateTime.now()); topicRepository.saveAndFlush(topic); if (!topicPostVM.categories().isEmpty()) { for (String catName: topicPostVM.categories()) { @@ -112,7 +110,6 @@ public void update(TopicPostVM topicPostVM, Integer topicId) { topic.setName(topicPostVM.name()); topic.setPublish(topicPostVM.isPublish()); topic.setDescription(topicPostVM.description()); - topic.setUpdatedAt(LocalDateTime.now()); Set newCategories = new HashSet<>(categoryRepository.findAllByNameIn(topicPostVM.categories())); topic.setCategories(newCategories); log.info(String.valueOf(newCategories.size())); diff --git a/src/main/java/com/backend/elearning/domain/user/User.java b/src/main/java/com/backend/elearning/domain/user/User.java index d4a7c815..185ba189 100644 --- a/src/main/java/com/backend/elearning/domain/user/User.java +++ b/src/main/java/com/backend/elearning/domain/user/User.java @@ -22,7 +22,6 @@ @Getter @Setter @Builder -@EntityListeners(value = CustomAuditingEntityListener.class) public class User extends AbstractAuditEntity implements UserDetails { @Id diff --git a/src/main/java/com/backend/elearning/domain/user/UserPutVm.java b/src/main/java/com/backend/elearning/domain/user/UserPutVm.java index e8194875..cb147e12 100644 --- a/src/main/java/com/backend/elearning/domain/user/UserPutVm.java +++ b/src/main/java/com/backend/elearning/domain/user/UserPutVm.java @@ -2,10 +2,7 @@ import com.backend.elearning.utils.EnumPattern; import jakarta.validation.constraints.Email; -import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import org.hibernate.validator.constraints.Length; public record UserPutVm( Long id, diff --git a/src/main/java/com/backend/elearning/domain/user/UserServiceImpl.java b/src/main/java/com/backend/elearning/domain/user/UserServiceImpl.java index a63ab8dc..e73e9767 100644 --- a/src/main/java/com/backend/elearning/domain/user/UserServiceImpl.java +++ b/src/main/java/com/backend/elearning/domain/user/UserServiceImpl.java @@ -101,8 +101,6 @@ public UserVm create(UserPostVm userPostVm) { .role(userPostVm.role()) .gender(userPostVm.gender()) .build(); - user.setCreatedAt(LocalDateTime.now()); - user.setUpdatedAt(LocalDateTime.now()); User savedUser = userRepository.saveAndFlush(user); return UserVm.fromModel(savedUser); } @@ -123,7 +121,6 @@ public UserVm update(UserPutVm userPutVm, Long userId) { user.setGender(userPutVm.gender()); user.setRole(userPutVm.role()); user.setDateOfBirth(LocalDate.of(userPutVm.year(), userPutVm.month(), userPutVm.day())); - user.setUpdatedAt(LocalDateTime.now()); Optional.ofNullable(userPutVm.photo()) .filter(photo -> !photo.isEmpty() && !photo.isBlank()) .ifPresent(user::setPhoto); diff --git a/src/main/java/com/backend/elearning/security/JWTAuthenticationFilter.java b/src/main/java/com/backend/elearning/security/JWTAuthenticationFilter.java index 704733b8..f7922caa 100644 --- a/src/main/java/com/backend/elearning/security/JWTAuthenticationFilter.java +++ b/src/main/java/com/backend/elearning/security/JWTAuthenticationFilter.java @@ -15,6 +15,9 @@ import java.io.IOException; +import static com.backend.elearning.utils.Constants.AUTH.AUTHORIZATION_HEADER; +import static com.backend.elearning.utils.Constants.AUTH.BEARER_TOKEN; + @Component @Slf4j public class JWTAuthenticationFilter extends OncePerRequestFilter { @@ -30,9 +33,9 @@ public JWTAuthenticationFilter(JWTUtil jwtUtil, @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { - String authHeader = request.getHeader("Authorization"); + String authHeader = request.getHeader(AUTHORIZATION_HEADER); - if (authHeader == null || !authHeader.startsWith("Bearer ")) { + if (authHeader == null || !authHeader.startsWith(BEARER_TOKEN)) { filterChain.doFilter(request, response); return; } diff --git a/src/main/java/com/backend/elearning/security/JWTUtil.java b/src/main/java/com/backend/elearning/security/JWTUtil.java index 630932c8..9af31047 100644 --- a/src/main/java/com/backend/elearning/security/JWTUtil.java +++ b/src/main/java/com/backend/elearning/security/JWTUtil.java @@ -4,6 +4,7 @@ import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.security.Keys; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.security.Key; import java.time.Instant; @@ -11,23 +12,24 @@ import java.util.Date; import java.util.List; import java.util.Map; +import static com.backend.elearning.utils.Constants.AUTH.SCOPES; @Service public class JWTUtil { - private static final String SECRET_KEY = - "foobar_123456789_foobar_123456789_foobar_123456789_foobar_123456789"; + @Value("${jwt.secret}") + private String SECRET_KEY; public String issueToken(String subject) { return issueToken(subject, Map.of()); } public String issueToken(String subject, String ...scopes) { - return issueToken(subject, Map.of("scopes", scopes)); + return issueToken(subject, Map.of(SCOPES, scopes)); } public String issueToken(String subject, List scopes) { - return issueToken(subject, Map.of("scopes", scopes)); + return issueToken(subject, Map.of(SCOPES, scopes)); } diff --git a/src/main/java/com/backend/elearning/security/UserDetailsServiceImpl.java b/src/main/java/com/backend/elearning/security/UserDetailsServiceImpl.java index cb1c72c7..a1b86154 100644 --- a/src/main/java/com/backend/elearning/security/UserDetailsServiceImpl.java +++ b/src/main/java/com/backend/elearning/security/UserDetailsServiceImpl.java @@ -5,7 +5,6 @@ import com.backend.elearning.domain.user.User; import com.backend.elearning.domain.user.UserRepository; import com.backend.elearning.exception.NotFoundException; -import com.backend.elearning.utils.Constants; import lombok.RequiredArgsConstructor; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; @@ -17,8 +16,11 @@ @Service @RequiredArgsConstructor public class UserDetailsServiceImpl implements UserDetailsService { - private final UserRepository userRepository ; + + private final UserRepository userRepository; + private final StudentRepository studentRepository; + @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { Optional user = userRepository.findByEmail(username); diff --git a/src/main/java/com/backend/elearning/utils/Constants.java b/src/main/java/com/backend/elearning/utils/Constants.java index ed8b46a6..cf757a5c 100644 --- a/src/main/java/com/backend/elearning/utils/Constants.java +++ b/src/main/java/com/backend/elearning/utils/Constants.java @@ -2,6 +2,13 @@ public final class Constants { + + public final class AUTH { + public static final String AUTHORIZATION_HEADER = "Authorization"; + public static final String BEARER_TOKEN = "Bearer "; + public static final String SCOPES = "scopes"; + } + public final class ERROR_CODE { public static final String USER_NOT_FOUND = "USER_NOT_FOUND"; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 5fa8abe8..83f9a0f0 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -49,4 +49,7 @@ payment: returnUrl: "http://localhost:5173/vn-pay-callback" version: "2.1.0" command: "pay" - orderType: "bill" \ No newline at end of file + orderType: "bill" + +jwt: + secret: ${JWT_SECRET} \ No newline at end of file diff --git a/src/test/java/com/backend/elearning/controller/CategoryControllerTest.java b/src/test/java/com/backend/elearning/controller/CategoryControllerTest.java index 6f787e3d..e74fe647 100644 --- a/src/test/java/com/backend/elearning/controller/CategoryControllerTest.java +++ b/src/test/java/com/backend/elearning/controller/CategoryControllerTest.java @@ -29,7 +29,6 @@ import java.util.List; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; - @WebMvcTest( controllers = CategoryController.class, excludeAutoConfiguration = { @@ -37,6 +36,8 @@ } ) public class CategoryControllerTest { + + @MockBean private JWTUtil jwtUtil; diff --git a/src/test/java/com/backend/elearning/service/ReviewServiceTest.java b/src/test/java/com/backend/elearning/service/ReviewServiceTest.java index 94284326..852e68a2 100644 --- a/src/test/java/com/backend/elearning/service/ReviewServiceTest.java +++ b/src/test/java/com/backend/elearning/service/ReviewServiceTest.java @@ -71,8 +71,6 @@ void createReviewForProduct_shouldReturnReviewVM_whenReviewIsCreatedSuccessfully .content(reviewPostVM.content()) .ratingStar(reviewPostVM.ratingStar()) .status(ReviewStatus.UNDER_REVIEW) - .createdAt(LocalDateTime.now()) - .updatedAt(LocalDateTime.now()) .build(); Review savedReview = Review.builder() @@ -82,8 +80,6 @@ void createReviewForProduct_shouldReturnReviewVM_whenReviewIsCreatedSuccessfully .status(ReviewStatus.UNDER_REVIEW) .content(reviewPostVM.content()) .ratingStar(reviewPostVM.ratingStar()) - .createdAt(reviewToSave.getCreatedAt()) - .updatedAt(reviewToSave.getUpdatedAt()) .build(); when(securityContext.getAuthentication()).thenReturn(authentication); @@ -124,8 +120,6 @@ void updateReview_shouldReturnUpdatedReviewVM_whenReviewIsUpdatedSuccessfully() .status(ReviewStatus.UNDER_REVIEW) .course(course) .ratingStar(5) - .createdAt(LocalDateTime.now().minusDays(1)) - .updatedAt(LocalDateTime.now().minusDays(1)) .build(); Review updatedReview = Review.builder() @@ -135,8 +129,6 @@ void updateReview_shouldReturnUpdatedReviewVM_whenReviewIsUpdatedSuccessfully() .status(ReviewStatus.UNDER_REVIEW) .content(reviewPostVM.content()) .ratingStar(reviewPostVM.ratingStar()) - .createdAt(existingReview.getCreatedAt()) - .updatedAt(LocalDateTime.now()) .build(); when(reviewRepository.findById(reviewId)).thenReturn(Optional.of(existingReview)); diff --git a/src/test/java/com/backend/elearning/service/UserServiceTest.java b/src/test/java/com/backend/elearning/service/UserServiceTest.java index 870980f4..a95fb83b 100644 --- a/src/test/java/com/backend/elearning/service/UserServiceTest.java +++ b/src/test/java/com/backend/elearning/service/UserServiceTest.java @@ -168,7 +168,6 @@ void shouldUpdateUserDetails_whenValidUserPutVmAndUserIdProvided() { assertEquals(userPutVm.active(), user.isActive()); assertEquals(userPutVm.role(), user.getRole()); assertEquals(LocalDate.of(userPutVm.year(), userPutVm.month(), userPutVm.day()), user.getDateOfBirth()); - assertNotNull(user.getUpdatedAt()); verify(userRepository).save(user); }