From 579fc26566661c5f9135ecf213c2fd37ea1caac8 Mon Sep 17 00:00:00 2001 From: alsdl0629 Date: Thu, 1 Feb 2024 19:03:14 +0900 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20(#539)=20=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=EC=84=B1=20=EC=B5=9C=EC=8B=A0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildSrc/src/main/kotlin/Dependencies.kt | 14 +++++++++----- buildSrc/src/main/kotlin/DependencyVersions.kt | 14 ++++++++------ buildSrc/src/main/kotlin/PluginVersions.kt | 16 ++++++++-------- dms-infrastructure/build.gradle.kts | 9 ++------- dms-persistence/build.gradle.kts | 14 +++++--------- 5 files changed, 32 insertions(+), 35 deletions(-) diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/buildSrc/src/main/kotlin/Dependencies.kt index d4e069749..3346df9ac 100644 --- a/buildSrc/src/main/kotlin/Dependencies.kt +++ b/buildSrc/src/main/kotlin/Dependencies.kt @@ -7,7 +7,7 @@ object Dependencies { const val JACKSON_TYPE = "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:${DependencyVersions.JACKSON_VERSION}" // java servlet - const val JAVA_SERVLET = "javax.servlet:javax.servlet-api:${DependencyVersions.SERVLET_VERSION}" + const val JAVA_SERVLET = "jakarta.servlet:jakarta.servlet-api:${DependencyVersions.SERVLET_VERSION}" // web const val SPRING_WEB = "org.springframework.boot:spring-boot-starter-web" @@ -19,7 +19,7 @@ object Dependencies { const val SPRING_THYMELEAF = "org.springframework.boot:spring-boot-starter-thymeleaf" // transaction - const val SPRING_TRANSACTION = "org.springframework:spring-tx:${DependencyVersions.SPRING_TRANSACTION}" + const val SPRING_TRANSACTION = "org.springframework:spring-tx:${DependencyVersions.SPRING_TRANSACTION_VERSION}" // configuration const val CONFIGURATION_PROCESSOR = "org.springframework.boot:spring-boot-configuration-processor" @@ -31,17 +31,21 @@ object Dependencies { const val REDIS = "org.springframework.data:spring-data-redis:${DependencyVersions.REDIS_VERSION}" // querydsl - const val QUERYDSL = "com.querydsl:querydsl-jpa:${DependencyVersions.QUERYDSL}" - const val QUERYDSL_PROCESSOR = "com.querydsl:querydsl-apt:${DependencyVersions.QUERYDSL}:jpa" + const val QUERYDSL = "com.querydsl:querydsl-jpa:${DependencyVersions.QUERYDSL_VERSION}:jakarta" + const val QUERYDSL_PROCESSOR = "com.querydsl:querydsl-apt:${DependencyVersions.QUERYDSL_VERSION}:jakarta" + const val JAKARTA_ANNOTATION_PROCESSOR = "jakarta.annotation:jakarta.annotation-api:${DependencyVersions.JAKARTA_ANNOTATION_VERSION}" + const val JAKARTA_PERSISTENCE_PROCESSOR = "jakarta.persistence:jakarta.persistence-api:${DependencyVersions.JAKARTA_PERSISTENCE_VERSION}" // security const val SPRING_SECURITY = "org.springframework.boot:spring-boot-starter-security" // jwt const val JWT = "io.jsonwebtoken:jjwt:${DependencyVersions.JWT_VERSION}" + const val JWT_IMPL = "io.jsonwebtoken:jjwt:${DependencyVersions.JWT_VERSION}" + const val JWT_JACKSON = "io.jsonwebtoken:jjwt:${DependencyVersions.JWT_VERSION}" // aws - const val SPRING_AWS = "org.springframework.cloud:spring-cloud-starter-aws:${DependencyVersions.AWS_VERSION}" + const val SPRING_AWS = "io.awspring.cloud:spring-cloud-starter-aws:${DependencyVersions.AWS_VERSION}" const val AWS_SES = "com.amazonaws:aws-java-sdk-ses:${DependencyVersions.SES_VERSION}" // test diff --git a/buildSrc/src/main/kotlin/DependencyVersions.kt b/buildSrc/src/main/kotlin/DependencyVersions.kt index 44154ea9e..3b1f3b6b8 100644 --- a/buildSrc/src/main/kotlin/DependencyVersions.kt +++ b/buildSrc/src/main/kotlin/DependencyVersions.kt @@ -1,13 +1,15 @@ object DependencyVersions { - const val JACKSON_VERSION = "2.10.3" - const val JWT_VERSION = "0.9.1" - const val AWS_VERSION = "2.2.6.RELEASE" + const val JACKSON_VERSION = "2.16.1" + const val JWT_VERSION = "0.12.5" + const val AWS_VERSION = "2.4.4" const val SES_VERSION = "1.11.852" const val REDIS_VERSION = "2.7.2" - const val SERVLET_VERSION = "4.0.1" + const val SERVLET_VERSION = "6.0.0" const val UUID_TIME_VERSION = "3.1.4" - const val SPRING_TRANSACTION = "5.3.22" - const val QUERYDSL = "5.0.0" + const val SPRING_TRANSACTION_VERSION = "6.1.2" + const val QUERYDSL_VERSION = "5.0.0" + const val JAKARTA_ANNOTATION_VERSION = "2.1.1" + const val JAKARTA_PERSISTENCE_VERSION = "3.1.0" const val MYSQL = "8.0.28" const val APACHE_POI_VERSION = "3.7" const val MOCKK_VERSION = "1.13.2" diff --git a/buildSrc/src/main/kotlin/PluginVersions.kt b/buildSrc/src/main/kotlin/PluginVersions.kt index b15e914a9..a59016d61 100644 --- a/buildSrc/src/main/kotlin/PluginVersions.kt +++ b/buildSrc/src/main/kotlin/PluginVersions.kt @@ -1,11 +1,11 @@ object PluginVersions { - const val SPRING_BOOT_VERSION = "2.7.1" - const val DEPENDENCY_MANAGER_VERSION = "1.0.11.RELEASE" - const val JVM_VERSION = "1.6.21" - const val SPRING_PLUGIN_VERSION = "1.6.21" - const val JPA_PLUGIN_VERSION = "1.6.21" - const val KAPT_VERSION = "1.7.10" - const val ALLOPEN_VERSION = "1.6.21" + const val SPRING_BOOT_VERSION = "3.2.2" + const val DEPENDENCY_MANAGER_VERSION = "1.1.4" + const val JVM_VERSION = "1.9.21" + const val SPRING_PLUGIN_VERSION = "1.9.21" + const val JPA_PLUGIN_VERSION = "1.9.21" + const val KAPT_VERSION = "1.8.21" + const val ALLOPEN_VERSION = "1.9.21" const val MOCKK_VERSION = "1.13.2" - const val DETEKT_VERSION = "1.21.0" + const val DETEKT_VERSION = "1.23.4" } \ No newline at end of file diff --git a/dms-infrastructure/build.gradle.kts b/dms-infrastructure/build.gradle.kts index 460469cdb..425a3cc88 100644 --- a/dms-infrastructure/build.gradle.kts +++ b/dms-infrastructure/build.gradle.kts @@ -25,6 +25,8 @@ dependencies { // jwt implementation(Dependencies.JWT) + runtimeOnly(Dependencies.JWT_IMPL) + runtimeOnly(Dependencies.JWT_JACKSON) // aws implementation(Dependencies.AWS_SES) @@ -56,13 +58,6 @@ dependencies { implementation(Dependencies.FCM) } -kapt { - arguments { - arg("mapstruct.defaultComponentModel", "spring") - arg("mapstruct.unmappedTargetPolicy", "ignore") - } -} - tasks.getByName("jar") { enabled = false } \ No newline at end of file diff --git a/dms-persistence/build.gradle.kts b/dms-persistence/build.gradle.kts index c15ad47f0..9af4109f6 100644 --- a/dms-persistence/build.gradle.kts +++ b/dms-persistence/build.gradle.kts @@ -16,19 +16,15 @@ dependencies { // querydsl implementation(Dependencies.QUERYDSL) kapt(Dependencies.QUERYDSL_PROCESSOR) + kapt(Dependencies.JAKARTA_ANNOTATION_PROCESSOR) + kapt(Dependencies.JAKARTA_PERSISTENCE_PROCESSOR) // time based uuid implementation(Dependencies.UUID_TIME) } allOpen { - annotation("javax.persistence.Entity") - annotation("javax.persistence.MappedSuperclass") - annotation("javax.persistence.Embeddable") -} - -noArg { - annotation("javax.persistence.Entity") - annotation("javax.persistence.MappedSuperclass") - annotation("javax.persistence.Embeddable") + annotation("jakarta.persistence.Entity") + annotation("jakarta.persistence.MappedSuperclass") + annotation("jakarta.persistence.Embeddable") } \ No newline at end of file From d6ff23f8795a962fcc99cd3b3e1f1c6e271dfcff Mon Sep 17 00:00:00 2001 From: alsdl0629 Date: Thu, 1 Feb 2024 19:09:43 +0900 Subject: [PATCH 2/5] =?UTF-8?q?Chore:=20(#539)=20=EB=B2=84=EC=A0=84?= =?UTF-8?q?=EC=97=90=20=EB=A7=9E=EC=B6=B0=20=EC=BD=94=EB=93=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aliens/dms/global/error/ErrorResponse.kt | 4 +- .../dms/global/error/GlobalErrorHandler.kt | 10 +- .../dms/global/filter/ExceptionFilter.kt | 6 +- .../aliens/dms/global/filter/FilterConfig.kt | 5 +- .../aliens/dms/global/filter/JwtFilter.kt | 6 +- .../security/CustomAccessDeniedHandler.kt | 4 +- .../CustomAuthenticationEntryPoint.kt | 4 +- .../dms/global/security/SecurityConfig.kt | 303 +++++++++--------- .../dms/global/security/SecurityProperties.kt | 11 +- .../security/token/GenerateJwtAdapter.kt | 24 +- .../dms/global/security/token/JwtParser.kt | 12 +- .../global/security/token/JwtProperties.kt | 1 + .../aliens/dms/thirdparty/AwsProperties.kt | 4 +- .../api/config/EnableFeignClientsConfig.kt | 3 + .../dms/thirdparty/email/AwsSESAdapter.kt | 2 +- .../dms/thirdparty/email/AwsSESProperties.kt | 4 +- .../dms/thirdparty/storage/AwsS3Config.kt | 27 ++ .../dms/thirdparty/storage/AwsS3Properties.kt | 4 +- .../src/main/resources/application.yml | 17 +- .../dms/global/config/QuerydslConfig.kt | 5 +- .../aliens/dms/global/config/RedisConfig.kt | 6 +- .../team/aliens/dms/persistence/BaseEntity.kt | 8 +- .../aliens/dms/persistence/BaseTimeEntity.kt | 4 +- .../aliens/dms/persistence/BaseUUIDEntity.kt | 8 +- .../manager/entity/ManagerJpaEntity.kt | 16 +- .../persistence/meal/entity/MealJpaEntity.kt | 18 +- .../notice/entity/NoticeJpaEntity.kt | 12 +- .../entity/DeviceTokenJpaEntity.kt | 12 +- .../entity/NotificationOfUserJpaEntity.kt | 16 +- .../entity/TopicSubscriptionJpaEntity.kt | 22 +- .../point/entity/PhraseJpaEntity.kt | 10 +- .../point/entity/PointFilterJpaEntity.kt | 18 +- .../point/entity/PointHistoryJpaEntity.kt | 16 +- .../point/entity/PointOptionJpaEntity.kt | 16 +- .../entity/RemainAvailableTimeJpaEntity.kt | 20 +- .../remain/entity/RemainOptionJpaEntity.kt | 12 +- .../remain/entity/RemainStatusJpaEntity.kt | 20 +- .../persistence/room/entity/RoomJpaEntity.kt | 14 +- .../entity/AvailableFeatureJpaEntity.kt | 16 +- .../school/entity/SchoolJpaEntity.kt | 8 +- .../student/entity/StudentJpaEntity.kt | 26 +- .../student/mapper/StudentMapper.kt | 2 +- .../entity/AvailableTimeJpaEntity.kt | 16 +- .../entity/SeatApplicationJpaEntity.kt | 18 +- .../studyroom/entity/SeatJpaEntity.kt | 18 +- .../studyroom/entity/SeatTypeJpaEntity.kt | 12 +- .../studyroom/entity/StudyRoomJpaEntity.kt | 18 +- .../entity/StudyRoomTimeSlotJpaEntity.kt | 18 +- .../studyroom/entity/TimeSlotJpaEntity.kt | 12 +- .../tag/entity/StudentTagJpaEntity.kt | 14 +- .../persistence/tag/entity/TagJpaEntity.kt | 16 +- .../persistence/user/entity/UserJpaEntity.kt | 22 +- .../dms/common/extension/FileExtension.kt | 2 +- .../validator/NotNullElementsValidator.kt | 6 +- .../aliens/dms/domain/auth/AuthWebAdapter.kt | 12 +- .../dto/request/SendEmailCodeWebRequest.kt | 8 +- .../auth/dto/request/SignInWebRequest.kt | 4 +- .../aliens/dms/domain/file/FileWebAdapter.kt | 2 +- .../dms/domain/manager/ManagerWebAdapter.kt | 6 +- .../request/ResetPasswordManagerWebRequest.kt | 8 +- .../aliens/dms/domain/meal/MealWebAdapter.kt | 6 +- .../dms/domain/notice/NoticeWebAdapter.kt | 4 +- .../dto/request/CreateNoticeWebRequest.kt | 4 +- .../dto/request/UpdateNoticeWebRequest.kt | 4 +- .../notification/NotificationWebAdapter.kt | 2 +- .../dms/domain/point/PointWebAdapter.kt | 6 +- .../request/CreatePointOptionWebRequest.kt | 6 +- .../point/dto/request/GrantPointWebRequest.kt | 2 +- .../request/UpdatePointOptionWebRequest.kt | 6 +- .../dms/domain/remain/RemainWebAdapter.kt | 6 +- .../request/CreateRemainOptionWebRequest.kt | 4 +- .../UpdateRemainAvailableTimeWebRequest.kt | 2 +- .../request/UpdateRemainOptionWebRequest.kt | 4 +- .../dms/domain/school/SchoolWebAdapter.kt | 8 +- .../dto/request/UpdateQuestionWebRequest.kt | 4 +- .../dms/domain/student/StudentWebAdapter.kt | 10 +- .../request/ResetStudentPasswordWebRequest.kt | 8 +- .../student/dto/request/SignUpWebRequest.kt | 14 +- .../request/UpdateStudentProfileWebRequest.kt | 4 +- .../domain/studyroom/StudyRoomWebAdapter.kt | 6 +- .../studyroom/dto/CreateSeatTypeWebRequest.kt | 4 +- .../dto/CreateStudyRoomWebRequest.kt | 10 +- .../studyroom/dto/CreateTimeSlotWebRequest.kt | 2 +- .../dto/UpdateAvailableTimeWebRequest.kt | 2 +- .../dto/UpdateStudyRoomWebRequest.kt | 10 +- .../studyroom/dto/UpdateTimeSlotWebRequest.kt | 2 +- .../aliens/dms/domain/tag/TagWebAdapter.kt | 4 +- .../dms/domain/tag/dto/CreateTagWebRequest.kt | 4 +- .../dms/domain/tag/dto/GrantTagWebRequest.kt | 2 +- .../dms/domain/tag/dto/UpdateTagWebRequest.kt | 4 +- .../aliens/dms/domain/user/UserWebAdapter.kt | 4 +- .../request/UpdateUserPasswordWebRequest.kt | 6 +- 92 files changed, 588 insertions(+), 544 deletions(-) create mode 100644 dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/storage/AwsS3Config.kt diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/error/ErrorResponse.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/error/ErrorResponse.kt index 48b8036a5..efd5e87b8 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/error/ErrorResponse.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/error/ErrorResponse.kt @@ -1,10 +1,10 @@ package team.aliens.dms.global.error +import jakarta.validation.ConstraintViolation +import jakarta.validation.ConstraintViolationException import org.springframework.validation.BindingResult import org.springframework.validation.FieldError import team.aliens.dms.common.error.ErrorProperty -import javax.validation.ConstraintViolation -import javax.validation.ConstraintViolationException data class ErrorResponse( val status: Int, diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/error/GlobalErrorHandler.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/error/GlobalErrorHandler.kt index b31656a80..51a1382bc 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/error/GlobalErrorHandler.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/error/GlobalErrorHandler.kt @@ -1,5 +1,6 @@ package team.aliens.dms.global.error +import jakarta.validation.ConstraintViolationException import org.springframework.http.HttpStatus import org.springframework.validation.BindException import org.springframework.validation.BindingResult @@ -7,7 +8,6 @@ import org.springframework.web.bind.MethodArgumentNotValidException import org.springframework.web.bind.annotation.ExceptionHandler import org.springframework.web.bind.annotation.ResponseStatus import org.springframework.web.bind.annotation.RestControllerAdvice -import javax.validation.ConstraintViolationException @RestControllerAdvice class GlobalErrorHandler { @@ -18,9 +18,13 @@ class GlobalErrorHandler { @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(ConstraintViolationException::class) - protected fun handleConstraintViolationException(e: ConstraintViolationException): ValidationErrorResponse? = ErrorResponse.of(e) + protected fun handleConstraintViolationException( + e: ConstraintViolationException + ): ValidationErrorResponse? = ErrorResponse.of(e) @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(MethodArgumentNotValidException::class) - protected fun handleMethodArgumentNotViolationException(e: BindingResult): ValidationErrorResponse? = ErrorResponse.of(e) + protected fun handleMethodArgumentNotViolationException( + e: BindingResult + ): ValidationErrorResponse? = ErrorResponse.of(e) } diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/filter/ExceptionFilter.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/filter/ExceptionFilter.kt index 4cce71388..b745717ed 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/filter/ExceptionFilter.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/filter/ExceptionFilter.kt @@ -2,6 +2,9 @@ package team.aliens.dms.global.filter import com.fasterxml.jackson.databind.ObjectMapper import io.sentry.Sentry +import jakarta.servlet.FilterChain +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletResponse import org.springframework.http.MediaType import org.springframework.web.filter.OncePerRequestFilter import team.aliens.dms.common.error.DmsException @@ -9,9 +12,6 @@ import team.aliens.dms.common.error.ErrorProperty import team.aliens.dms.global.error.ErrorResponse import team.aliens.dms.global.error.GlobalErrorCode import java.nio.charset.StandardCharsets -import javax.servlet.FilterChain -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse class ExceptionFilter( private val objectMapper: ObjectMapper diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/filter/FilterConfig.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/filter/FilterConfig.kt index 77b408a2f..0a855dfa1 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/filter/FilterConfig.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/filter/FilterConfig.kt @@ -1,7 +1,7 @@ package team.aliens.dms.global.filter import com.fasterxml.jackson.databind.ObjectMapper -import org.springframework.security.config.annotation.SecurityConfigurerAdapter +import org.springframework.security.config.annotation.SecurityConfigurer import org.springframework.security.config.annotation.web.builders.HttpSecurity import org.springframework.security.web.DefaultSecurityFilterChain import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter @@ -12,7 +12,8 @@ import team.aliens.dms.global.security.token.JwtParser class FilterConfig( private val jwtParser: JwtParser, private val objectMapper: ObjectMapper -) : SecurityConfigurerAdapter() { +) : SecurityConfigurer { + override fun init(builder: HttpSecurity?) {} override fun configure(builder: HttpSecurity) { builder.addFilterBefore(JwtFilter(jwtParser), UsernamePasswordAuthenticationFilter::class.java) diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/filter/JwtFilter.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/filter/JwtFilter.kt index f4ed94227..cc4de2a1f 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/filter/JwtFilter.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/filter/JwtFilter.kt @@ -1,12 +1,12 @@ package team.aliens.dms.global.filter +import jakarta.servlet.FilterChain +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletResponse import org.springframework.security.core.context.SecurityContextHolder import org.springframework.web.filter.OncePerRequestFilter import team.aliens.dms.global.security.token.JwtParser import team.aliens.dms.global.security.token.JwtProperties -import javax.servlet.FilterChain -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse class JwtFilter( private val jwtParser: JwtParser diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/CustomAccessDeniedHandler.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/CustomAccessDeniedHandler.kt index 45e6717cc..39e9fc87a 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/CustomAccessDeniedHandler.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/CustomAccessDeniedHandler.kt @@ -1,11 +1,11 @@ package team.aliens.dms.global.security +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletResponse import org.springframework.security.access.AccessDeniedException import org.springframework.security.web.access.AccessDeniedHandler import org.springframework.stereotype.Component import team.aliens.dms.global.security.exception.InvalidRoleException -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse @Component class CustomAccessDeniedHandler : AccessDeniedHandler { diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/CustomAuthenticationEntryPoint.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/CustomAuthenticationEntryPoint.kt index 7f3774002..b40b2f141 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/CustomAuthenticationEntryPoint.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/CustomAuthenticationEntryPoint.kt @@ -1,11 +1,11 @@ package team.aliens.dms.global.security +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletResponse import org.springframework.security.core.AuthenticationException import org.springframework.security.web.AuthenticationEntryPoint import org.springframework.stereotype.Component import team.aliens.dms.global.security.exception.ForbiddenException -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse @Component class CustomAuthenticationEntryPoint : AuthenticationEntryPoint { diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/SecurityConfig.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/SecurityConfig.kt index 331dd7847..e6bcbff64 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/SecurityConfig.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/SecurityConfig.kt @@ -4,9 +4,13 @@ import com.fasterxml.jackson.databind.ObjectMapper import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import org.springframework.http.HttpMethod +import org.springframework.security.config.Customizer +import org.springframework.security.config.annotation.SecurityConfigurerAdapter import org.springframework.security.config.annotation.web.builders.HttpSecurity import org.springframework.security.config.http.SessionCreationPolicy +import org.springframework.security.config.web.server.ServerHttpSecurity.http import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder +import org.springframework.security.web.DefaultSecurityFilterChain import org.springframework.security.web.SecurityFilterChain import team.aliens.dms.domain.auth.model.Authority.MANAGER import team.aliens.dms.domain.auth.model.Authority.STUDENT @@ -18,166 +22,165 @@ class SecurityConfig( private val jwtParser: JwtParser, private val objectMapper: ObjectMapper, private val authenticationEntryPoint: CustomAuthenticationEntryPoint, - private val accessDeniedHandler: CustomAccessDeniedHandler + private val accessDeniedHandler: CustomAccessDeniedHandler, + private val filterConfig: FilterConfig, ) { @Bean protected fun filterChain(http: HttpSecurity): SecurityFilterChain { http - .csrf().disable() - .cors().and() + .csrf { it.disable() } + .formLogin { it.disable() } + .cors(Customizer.withDefaults()) + .sessionManagement { it.sessionCreationPolicy(SessionCreationPolicy.STATELESS) } http - .sessionManagement() - .sessionCreationPolicy(SessionCreationPolicy.STATELESS) + .authorizeHttpRequests { authorize -> authorize + // healthcheck + .requestMatchers(HttpMethod.GET, "/").permitAll() + + // /auth + .requestMatchers(HttpMethod.GET, "/auth/account-id").permitAll() + .requestMatchers(HttpMethod.GET, "/auth/email").permitAll() + .requestMatchers(HttpMethod.GET, "/auth/code").permitAll() + .requestMatchers(HttpMethod.POST, "/auth/code").permitAll() + .requestMatchers(HttpMethod.POST, "/auth/tokens").permitAll() + .requestMatchers(HttpMethod.PUT, "/auth/reissue").permitAll() + + // /users + .requestMatchers(HttpMethod.GET, "/users/password").hasAnyAuthority(STUDENT.name, MANAGER.name) + .requestMatchers(HttpMethod.PATCH, "/users/password").hasAnyAuthority(STUDENT.name, MANAGER.name) + + // /students + .requestMatchers(HttpMethod.GET, "/students/email/duplication").permitAll() + .requestMatchers(HttpMethod.GET, "/students/account-id/duplication").permitAll() + .requestMatchers(HttpMethod.GET, "/students/account-id/{school-id}").permitAll() + .requestMatchers(HttpMethod.GET, "/students/name").permitAll() + .requestMatchers(HttpMethod.GET, "/students/profile").hasAuthority(STUDENT.name) + .requestMatchers(HttpMethod.POST, "/students/signup").permitAll() + .requestMatchers(HttpMethod.PATCH, "/students/password/initialization").permitAll() + .requestMatchers(HttpMethod.PATCH, "/students/profile").hasAuthority(STUDENT.name) + .requestMatchers(HttpMethod.DELETE, "/students").hasAuthority(STUDENT.name) + .requestMatchers(HttpMethod.GET, "/students").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.GET, "/students/{student-id}").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.DELETE, "/students/{student-id}").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.GET, "/students/file").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.POST, "/students/file/room").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.POST, "/students/file/gcn").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.POST, "/students/verified-student").hasAuthority(MANAGER.name) + + // /managers + .requestMatchers(HttpMethod.GET, "/managers/account-id/{school-id}").permitAll() + .requestMatchers(HttpMethod.GET, "/managers/profile").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.PATCH, "/managers/password/initialization").permitAll() + + // /schools + .requestMatchers(HttpMethod.GET, "/schools").permitAll() + .requestMatchers(HttpMethod.GET, "/schools/question/{school-id}").permitAll() + .requestMatchers(HttpMethod.GET, "/schools/answer/{school-id}").permitAll() + .requestMatchers(HttpMethod.GET, "/schools/code").permitAll() + .requestMatchers(HttpMethod.PATCH, "/schools/question").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.PATCH, "/schools/code").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.GET, "/schools/available-features").hasAnyAuthority(MANAGER.name, STUDENT.name) + + // /notices + .requestMatchers(HttpMethod.GET, "/notices/status").hasAuthority(STUDENT.name) + .requestMatchers(HttpMethod.GET, "/notices").hasAnyAuthority(STUDENT.name, MANAGER.name) + .requestMatchers(HttpMethod.GET, "/notices/{notice-id}").hasAnyAuthority(STUDENT.name, MANAGER.name) + .requestMatchers(HttpMethod.POST, "/notices").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.PATCH, "/notices/{notice-id}").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.DELETE, "/notices/{notice-id}").hasAuthority(MANAGER.name) + + // /files + .requestMatchers(HttpMethod.POST, "/files").permitAll() + .requestMatchers(HttpMethod.GET, "/files/url").permitAll() + + // /meals + .requestMatchers(HttpMethod.GET, "/meals/{date}").hasAuthority(STUDENT.name) + + // /points + .requestMatchers(HttpMethod.GET, "/points").hasAuthority(STUDENT.name) + .requestMatchers(HttpMethod.POST, "/points/options").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.DELETE, "/points/options/{point-option-id}").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.POST, "/points/history").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.GET, "/points/history").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.GET, "/points/history/students/{student-id}").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.GET, "/points/history/students/{student-id}/recent").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.GET, "/points/history/file").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.PUT, "/points/history/{point-history-id}").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.GET, "/points/options").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.PATCH, "/points/options/{point-option-id}").hasAuthority(MANAGER.name) + + // /templates + .requestMatchers(HttpMethod.GET, "/templates").permitAll() + .requestMatchers(HttpMethod.POST, "/templates").permitAll() + .requestMatchers(HttpMethod.PATCH, "/templates").permitAll() + .requestMatchers(HttpMethod.DELETE, "/templates").permitAll() + + // /tags + .requestMatchers(HttpMethod.GET, "/tags").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.DELETE, "/tags/{tag-id}").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.POST, "/tags").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.POST, "/tags/students").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.DELETE, "/tags/students").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.PATCH, "/tags/{tag-id}").hasAuthority(MANAGER.name) + + // /study-rooms + .requestMatchers(HttpMethod.GET, "/study-rooms/available-time").hasAnyAuthority(STUDENT.name, MANAGER.name) + .requestMatchers(HttpMethod.PUT, "/study-rooms/available-time").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.GET, "/study-rooms/types").hasAnyAuthority(STUDENT.name, MANAGER.name) + .requestMatchers(HttpMethod.POST, "/study-rooms/types").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.PUT, "/study-rooms/seats/{seat-id}").hasAuthority(STUDENT.name) + .requestMatchers(HttpMethod.DELETE, "/study-rooms/seats/{seat-id}").hasAuthority(STUDENT.name) + .requestMatchers(HttpMethod.POST, "/study-rooms").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.PATCH, "/study-rooms/{study-room-id}").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.DELETE, "/study-rooms/{study-room-id}").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.GET, "/study-rooms/{study-room-id}/students").hasAuthority(STUDENT.name) + .requestMatchers(HttpMethod.GET, "/study-rooms/{study-room-id}/managers").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.GET, "/study-rooms/list/students").hasAuthority(STUDENT.name) + .requestMatchers(HttpMethod.GET, "/study-rooms/list/managers").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.DELETE, "/study-rooms/types/{type-id}").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.GET, "/study-rooms/my").hasAuthority(STUDENT.name) + .requestMatchers(HttpMethod.GET, "/study-rooms/time-slots").hasAnyAuthority(STUDENT.name, MANAGER.name) + .requestMatchers(HttpMethod.DELETE, "/study-rooms/time-slots/{time-slot-id}").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.POST, "/study-rooms/time-slots").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.PATCH, "/study-rooms/time-slots/{time-slot-id}").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.DELETE, "/study-rooms/time-slots/{time-slot-id}").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.POST, "/study-rooms/students/file").hasAuthority(MANAGER.name) + + // /remains + .requestMatchers(HttpMethod.PUT, "/remains/available-time").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.PUT, "/remains/{remain-option-id}").hasAuthority(STUDENT.name) + .requestMatchers(HttpMethod.POST, "/remains/options").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.PATCH, "/remains/options/{remain-option-id}").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.GET, "/remains/my").hasAuthority(STUDENT.name) + .requestMatchers(HttpMethod.GET, "/remains/options").hasAnyAuthority(STUDENT.name, MANAGER.name) + .requestMatchers(HttpMethod.GET, "/remains/available-time").hasAnyAuthority(STUDENT.name, MANAGER.name) + .requestMatchers(HttpMethod.DELETE, "/remains/options/{remain-option-id}").hasAuthority(MANAGER.name) + .requestMatchers(HttpMethod.GET, "/remains/status/file").hasAuthority(MANAGER.name) + + // /notifications + .requestMatchers(HttpMethod.POST, "/notifications/token").authenticated() + .requestMatchers(HttpMethod.GET, "/notifications").authenticated() + + // /notification + .requestMatchers(HttpMethod.DELETE, "/notifications/{notification-of-user-id}").authenticated() + .requestMatchers(HttpMethod.DELETE, "/notifications").authenticated() + .requestMatchers(HttpMethod.POST, "/notifications/token").authenticated() + .requestMatchers(HttpMethod.POST, "/notifications/topic").authenticated() + .requestMatchers(HttpMethod.DELETE, "/notifications/topic").authenticated() + .requestMatchers(HttpMethod.GET, "/notifications/topic").authenticated() + .requestMatchers(HttpMethod.PATCH, "/notifications/topic").authenticated() + .anyRequest().denyAll() + } http - .authorizeRequests() - - // healthcheck - .antMatchers(HttpMethod.GET, "/").permitAll() - - // /auth - .antMatchers(HttpMethod.GET, "/auth/account-id").permitAll() - .antMatchers(HttpMethod.GET, "/auth/email").permitAll() - .antMatchers(HttpMethod.GET, "/auth/code").permitAll() - .antMatchers(HttpMethod.POST, "/auth/code").permitAll() - .antMatchers(HttpMethod.POST, "/auth/tokens").permitAll() - .antMatchers(HttpMethod.PUT, "/auth/reissue").permitAll() - - // /users - .antMatchers(HttpMethod.GET, "/users/password").hasAnyAuthority(STUDENT.name, MANAGER.name) - .antMatchers(HttpMethod.PATCH, "/users/password").hasAnyAuthority(STUDENT.name, MANAGER.name) - - // /students - .antMatchers(HttpMethod.GET, "/students/email/duplication").permitAll() - .antMatchers(HttpMethod.GET, "/students/account-id/duplication").permitAll() - .antMatchers(HttpMethod.GET, "/students/account-id/{school-id}").permitAll() - .antMatchers(HttpMethod.GET, "/students/name").permitAll() - .antMatchers(HttpMethod.GET, "/students/profile").hasAuthority(STUDENT.name) - .antMatchers(HttpMethod.POST, "/students/signup").permitAll() - .antMatchers(HttpMethod.PATCH, "/students/password/initialization").permitAll() - .antMatchers(HttpMethod.PATCH, "/students/profile").hasAuthority(STUDENT.name) - .antMatchers(HttpMethod.DELETE, "/students").hasAuthority(STUDENT.name) - .antMatchers(HttpMethod.GET, "/students").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.GET, "/students/{student-id}").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.DELETE, "/students/{student-id}").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.GET, "/students/file").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.POST, "/students/file/room").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.POST, "/students/file/gcn").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.POST, "/students/verified-student").hasAuthority(MANAGER.name) - - // /managers - .antMatchers(HttpMethod.GET, "/managers/account-id/{school-id}").permitAll() - .antMatchers(HttpMethod.GET, "/managers/profile").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.PATCH, "/managers/password/initialization").permitAll() - - // /schools - .antMatchers(HttpMethod.GET, "/schools").permitAll() - .antMatchers(HttpMethod.GET, "/schools/question/{school-id}").permitAll() - .antMatchers(HttpMethod.GET, "/schools/answer/{school-id}").permitAll() - .antMatchers(HttpMethod.GET, "/schools/code").permitAll() - .antMatchers(HttpMethod.PATCH, "/schools/question").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.PATCH, "/schools/code").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.GET, "/schools/available-features").hasAnyAuthority(MANAGER.name, STUDENT.name) - - // /notices - .antMatchers(HttpMethod.GET, "/notices/status").hasAuthority(STUDENT.name) - .antMatchers(HttpMethod.GET, "/notices").hasAnyAuthority(STUDENT.name, MANAGER.name) - .antMatchers(HttpMethod.GET, "/notices/{notice-id}").hasAnyAuthority(STUDENT.name, MANAGER.name) - .antMatchers(HttpMethod.POST, "/notices").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.PATCH, "/notices/{notice-id}").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.DELETE, "/notices/{notice-id}").hasAuthority(MANAGER.name) - - // /files - .antMatchers(HttpMethod.POST, "/files").permitAll() - .antMatchers(HttpMethod.GET, "/files/url").permitAll() - - // /meals - .antMatchers(HttpMethod.GET, "/meals/{date}").hasAuthority(STUDENT.name) - - // /points - .antMatchers(HttpMethod.GET, "/points").hasAuthority(STUDENT.name) - .antMatchers(HttpMethod.POST, "/points/options").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.DELETE, "/points/options/{point-option-id}").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.POST, "/points/history").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.GET, "/points/history").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.GET, "/points/history/students/{student-id}").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.GET, "/points/history/students/{student-id}/recent").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.GET, "/points/history/file").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.PUT, "/points/history/{point-history-id}").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.GET, "/points/options").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.PATCH, "/points/options/{point-option-id}").hasAuthority(MANAGER.name) - - // /templates - .antMatchers(HttpMethod.GET, "/templates").permitAll() - .antMatchers(HttpMethod.POST, "/templates").permitAll() - .antMatchers(HttpMethod.PATCH, "/templates").permitAll() - .antMatchers(HttpMethod.DELETE, "/templates").permitAll() - - // /tags - .antMatchers(HttpMethod.GET, "/tags").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.DELETE, "/tags/{tag-id}").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.POST, "/tags").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.POST, "/tags/students").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.DELETE, "/tags/students").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.PATCH, "/tags/{tag-id}").hasAuthority(MANAGER.name) - - // /study-rooms - .antMatchers(HttpMethod.GET, "/study-rooms/available-time").hasAnyAuthority(STUDENT.name, MANAGER.name) - .antMatchers(HttpMethod.PUT, "/study-rooms/available-time").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.GET, "/study-rooms/types").hasAnyAuthority(STUDENT.name, MANAGER.name) - .antMatchers(HttpMethod.POST, "/study-rooms/types").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.PUT, "/study-rooms/seats/{seat-id}").hasAuthority(STUDENT.name) - .antMatchers(HttpMethod.DELETE, "/study-rooms/seats/{seat-id}").hasAuthority(STUDENT.name) - .antMatchers(HttpMethod.POST, "/study-rooms").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.PATCH, "/study-rooms/{study-room-id}").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.DELETE, "/study-rooms/{study-room-id}").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.GET, "/study-rooms/{study-room-id}/students").hasAuthority(STUDENT.name) - .antMatchers(HttpMethod.GET, "/study-rooms/{study-room-id}/managers").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.GET, "/study-rooms/list/students").hasAuthority(STUDENT.name) - .antMatchers(HttpMethod.GET, "/study-rooms/list/managers").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.DELETE, "/study-rooms/types/{type-id}").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.GET, "/study-rooms/my").hasAuthority(STUDENT.name) - .antMatchers(HttpMethod.GET, "/study-rooms/time-slots").hasAnyAuthority(STUDENT.name, MANAGER.name) - .antMatchers(HttpMethod.DELETE, "/study-rooms/time-slots/{time-slot-id}").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.POST, "/study-rooms/time-slots").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.PATCH, "/study-rooms/time-slots/{time-slot-id}").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.DELETE, "/study-rooms/time-slots/{time-slot-id}").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.POST, "/study-rooms/students/file").hasAuthority(MANAGER.name) - - // /remains - .antMatchers(HttpMethod.PUT, "/remains/available-time").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.PUT, "/remains/{remain-option-id}").hasAuthority(STUDENT.name) - .antMatchers(HttpMethod.POST, "/remains/options").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.PATCH, "/remains/options/{remain-option-id}").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.GET, "/remains/my").hasAuthority(STUDENT.name) - .antMatchers(HttpMethod.GET, "/remains/options").hasAnyAuthority(STUDENT.name, MANAGER.name) - .antMatchers(HttpMethod.GET, "/remains/available-time").hasAnyAuthority(STUDENT.name, MANAGER.name) - .antMatchers(HttpMethod.DELETE, "/remains/options/{remain-option-id}").hasAuthority(MANAGER.name) - .antMatchers(HttpMethod.GET, "/remains/status/file").hasAuthority(MANAGER.name) - - // /notifications - .antMatchers(HttpMethod.POST, "/notifications/token").authenticated() - .antMatchers(HttpMethod.GET, "/notifications").authenticated() - - // /notification - .antMatchers(HttpMethod.DELETE, "/notifications/{notification-of-user-id}").authenticated() - .antMatchers(HttpMethod.DELETE, "/notifications").authenticated() - .antMatchers(HttpMethod.POST, "/notifications/token").authenticated() - .antMatchers(HttpMethod.POST, "/notifications/topic").authenticated() - .antMatchers(HttpMethod.DELETE, "/notifications/topic").authenticated() - .antMatchers(HttpMethod.GET, "/notifications/topic").authenticated() - .antMatchers(HttpMethod.PATCH, "/notifications/topic").authenticated() - .anyRequest().denyAll() + .apply(filterConfig) http - .apply(FilterConfig(jwtParser, objectMapper)) - - http - .exceptionHandling() - .authenticationEntryPoint(authenticationEntryPoint) - .accessDeniedHandler(accessDeniedHandler) - + .exceptionHandling { exceptionHandling -> exceptionHandling + .authenticationEntryPoint(authenticationEntryPoint) + .accessDeniedHandler(accessDeniedHandler) + } return http.build() } diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/SecurityProperties.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/SecurityProperties.kt index 262a43547..1b2faa11a 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/SecurityProperties.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/SecurityProperties.kt @@ -1,15 +1,18 @@ package team.aliens.dms.global.security +import io.jsonwebtoken.security.Keys import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.boot.context.properties.ConstructorBinding import java.util.Base64 +import javax.crypto.SecretKey @ConfigurationProperties(prefix = "secret") -@ConstructorBinding class SecurityProperties( secretKey: String, val accessExp: Int, - val refreshExp: Int + val refreshExp: Int, ) { - val secretKey: String = Base64.getEncoder().encodeToString(secretKey.toByteArray()) + val secretKey: SecretKey = Keys.hmacShaKeyFor( + Base64.getEncoder().encodeToString(secretKey.toByteArray()) + .toByteArray(Charsets.UTF_8) + ) } diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/GenerateJwtAdapter.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/GenerateJwtAdapter.kt index d19c9a0ba..a3f0f5275 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/GenerateJwtAdapter.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/GenerateJwtAdapter.kt @@ -1,8 +1,6 @@ package team.aliens.dms.global.security.token -import io.jsonwebtoken.Header import io.jsonwebtoken.Jwts -import io.jsonwebtoken.SignatureAlgorithm import org.springframework.stereotype.Component import team.aliens.dms.domain.auth.dto.TokenResponse import team.aliens.dms.domain.auth.model.Authority @@ -29,20 +27,24 @@ class GenerateJwtAdapter( private fun generateAccessToken(userId: UUID, authority: Authority) = Jwts.builder() - .signWith(SignatureAlgorithm.HS512, securityProperties.secretKey) - .setHeaderParam(Header.JWT_TYPE, JwtProperties.ACCESS) - .setId(userId.toString()) + .signWith(securityProperties.secretKey) + .header() + .add(JwtProperties.JWT_TYPE, JwtProperties.ACCESS) + .and() + .id(userId.toString()) .claim(JwtProperties.AUTHORITY, authority.name) - .setIssuedAt(Date()) - .setExpiration(Date(System.currentTimeMillis() + securityProperties.accessExp * 1000)) + .issuedAt(Date()) + .expiration(Date(System.currentTimeMillis() + securityProperties.accessExp * 1000)) .compact() private fun generateRefreshToken(userId: UUID, authority: Authority): String { val token = Jwts.builder() - .signWith(SignatureAlgorithm.HS512, securityProperties.secretKey) - .setHeaderParam(Header.JWT_TYPE, JwtProperties.REFRESH) - .setIssuedAt(Date()) - .setExpiration(Date(System.currentTimeMillis() + securityProperties.refreshExp * 1000)) + .signWith(securityProperties.secretKey) + .header() + .add(JwtProperties.JWT_TYPE, JwtProperties.REFRESH) + .and() + .issuedAt(Date()) + .expiration(Date(System.currentTimeMillis() + securityProperties.refreshExp * 1000)) .compact() val refreshToken = RefreshToken( diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtParser.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtParser.kt index 4ab3c703a..4a36317d1 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtParser.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtParser.kt @@ -2,7 +2,6 @@ package team.aliens.dms.global.security.token import io.jsonwebtoken.Claims import io.jsonwebtoken.ExpiredJwtException -import io.jsonwebtoken.Header import io.jsonwebtoken.InvalidClaimException import io.jsonwebtoken.Jws import io.jsonwebtoken.JwtException @@ -25,17 +24,17 @@ import team.aliens.dms.global.security.principle.StudentDetailsService class JwtParser( private val securityProperties: SecurityProperties, private val studentDetailsService: StudentDetailsService, - private val managerDetailsService: ManagerDetailsService + private val managerDetailsService: ManagerDetailsService, ) { fun getAuthentication(token: String): Authentication { val claims = getClaims(token) - if (claims.header[Header.JWT_TYPE] != JwtProperties.ACCESS) { + if (claims.header[JwtProperties.JWT_TYPE] != JwtProperties.ACCESS) { throw InvalidTokenException } - val userDetails = getDetails(claims.body) + val userDetails = getDetails(claims.payload) return UsernamePasswordAuthenticationToken(userDetails, "", userDetails.authorities) } @@ -43,8 +42,9 @@ class JwtParser( private fun getClaims(token: String): Jws { return try { Jwts.parser() - .setSigningKey(securityProperties.secretKey) - .parseClaimsJws(token) + .verifyWith(securityProperties.secretKey) + .build() + .parseSignedClaims(token) } catch (e: Exception) { when (e) { is InvalidClaimException -> throw InvalidTokenException diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtProperties.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtProperties.kt index bac1c0157..417f82ea9 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtProperties.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtProperties.kt @@ -6,4 +6,5 @@ object JwtProperties { const val ACCESS = "access" const val REFRESH = "refresh" const val AUTHORITY = "authority" + const val JWT_TYPE = "JWT" } diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/AwsProperties.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/AwsProperties.kt index 417a6cf99..4c5b4f026 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/AwsProperties.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/AwsProperties.kt @@ -1,11 +1,9 @@ package team.aliens.dms.thirdparty import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.boot.context.properties.ConstructorBinding @ConfigurationProperties("cloud.aws.credentials") -@ConstructorBinding class AwsProperties( val accessKey: String, - val secretKey: String + val secretKey: String, ) diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/api/config/EnableFeignClientsConfig.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/api/config/EnableFeignClientsConfig.kt index 80ee5c5ec..bd5aff68e 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/api/config/EnableFeignClientsConfig.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/api/config/EnableFeignClientsConfig.kt @@ -1,12 +1,15 @@ package team.aliens.dms.thirdparty.api.config import feign.codec.ErrorDecoder +import org.springframework.boot.autoconfigure.ImportAutoConfiguration import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.cloud.openfeign.EnableFeignClients +import org.springframework.cloud.openfeign.FeignAutoConfiguration import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import team.aliens.dms.thirdparty.api.error.FeignClientErrorDecoder +@ImportAutoConfiguration(FeignAutoConfiguration::class) @EnableFeignClients(basePackages = ["team.aliens.dms.thirdparty.api"]) @Configuration class EnableFeignClientsConfig { diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/email/AwsSESAdapter.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/email/AwsSESAdapter.kt index b9538f770..31270cd13 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/email/AwsSESAdapter.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/email/AwsSESAdapter.kt @@ -11,7 +11,7 @@ import com.amazonaws.services.simpleemail.model.UpdateTemplateRequest import com.fasterxml.jackson.databind.ObjectMapper import org.springframework.stereotype.Component import org.thymeleaf.context.Context -import org.thymeleaf.spring5.SpringTemplateEngine +import org.thymeleaf.spring6.SpringTemplateEngine import team.aliens.dms.domain.auth.model.EmailType import team.aliens.dms.domain.auth.spi.SendEmailPort import team.aliens.dms.domain.template.spi.TemplatePort diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/email/AwsSESProperties.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/email/AwsSESProperties.kt index 80fea7023..3bf1513e1 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/email/AwsSESProperties.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/email/AwsSESProperties.kt @@ -1,10 +1,8 @@ package team.aliens.dms.thirdparty.email import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.boot.context.properties.ConstructorBinding @ConfigurationProperties("cloud.aws.ses") -@ConstructorBinding class AwsSESProperties( - val source: String + val source: String, ) diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/storage/AwsS3Config.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/storage/AwsS3Config.kt new file mode 100644 index 000000000..9fc770e96 --- /dev/null +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/storage/AwsS3Config.kt @@ -0,0 +1,27 @@ +package team.aliens.dms.thirdparty.storage + +import com.amazonaws.auth.AWSStaticCredentialsProvider +import com.amazonaws.auth.BasicAWSCredentials +import com.amazonaws.regions.Regions +import com.amazonaws.services.s3.AmazonS3Client +import com.amazonaws.services.s3.AmazonS3ClientBuilder +import org.springframework.beans.factory.annotation.Value +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration + +@Configuration +class AwsS3Config( + @Value("\${cloud.aws.credentials.access-key}") + private val accessKey: String, + @Value("\${cloud.aws.credentials.secret-key}") + private val secretKey: String, +) { + @Bean + fun amazonS3Client(): AmazonS3Client { + val awsCredentials = BasicAWSCredentials(accessKey, secretKey) + return AmazonS3ClientBuilder.standard() + .withRegion(Regions.AP_NORTHEAST_2) + .withCredentials(AWSStaticCredentialsProvider(awsCredentials)) + .build() as AmazonS3Client + } +} diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/storage/AwsS3Properties.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/storage/AwsS3Properties.kt index 977fdbc1e..c28da2cf0 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/storage/AwsS3Properties.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/thirdparty/storage/AwsS3Properties.kt @@ -1,10 +1,8 @@ package team.aliens.dms.thirdparty.storage import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.boot.context.properties.ConstructorBinding @ConfigurationProperties("cloud.aws.s3") -@ConstructorBinding class AwsS3Properties( - val bucket: String + val bucket: String, ) diff --git a/dms-infrastructure/src/main/resources/application.yml b/dms-infrastructure/src/main/resources/application.yml index 4cb4df732..c1ac24c64 100644 --- a/dms-infrastructure/src/main/resources/application.yml +++ b/dms-infrastructure/src/main/resources/application.yml @@ -7,7 +7,7 @@ spring: timeout-per-shutdown-phase: "60s" datasource: - url: jdbc:mysql://${MYSQL_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:stag_dms}?useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true&tinyInt1isBit=false&rewriteBatchedStatements=true + url: jdbc:mysql://${MYSQL_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:dms}?useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true&tinyInt1isBit=false&rewriteBatchedStatements=true username: ${MYSQL_USERNAME:root} password: ${MYSQL_PASSWORD:11111111} driver-class-name: com.mysql.cj.jdbc.Driver @@ -26,10 +26,11 @@ spring: database-platform: org.hibernate.dialect.MySQL8Dialect open-in-view: false - redis: - port: ${REDIS_PORT:6379} - host: ${REDIS_HOST:localhost} - password: ${REDIS_PASSWORD:1234} + data: + redis: + port: ${REDIS_PORT:6379} + host: ${REDIS_HOST:localhost} + password: ${REDIS_PASSWORD:1234} thymeleaf: check-template-location: true @@ -47,12 +48,12 @@ fcm: file-url: ${FCM_FILE_URL} secret: - secret-key: ${SECRET_KEY:asdfghgfds} + secret-key: ${SECRET_KEY:asdfghgfdsasdfghgfdsasdfghgfdsasdfghgfdsasdfghgfdsasdfghgfdsasdfghgfdsasdfghgfdsasdfghgfdsasdfghgfds} access-exp: ${ACCESS_EXP:1800} refresh-exp: ${REFRESH_EXP:7200} open-feign: - neis-key: ${NEIS_KEY:asdf} + neis-key: ${NEIS_KEY:c285510776f048309a27c343cd0e4290} cloud: aws: @@ -70,7 +71,7 @@ cloud: source: ${SES_SENDER:asdf}S sentry: - dsn: ${SENTRY_DSN:asdf} + dsn: ${SENTRY_DSN:https://eb485e17c4db4b4d9e3ab8aee206e040@o4505293230112768.ingest.sentry.io/4505293252984832} traces-sample-rate: 1.0 logging: diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/global/config/QuerydslConfig.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/global/config/QuerydslConfig.kt index d01ab90fd..cf0198e1f 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/global/config/QuerydslConfig.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/global/config/QuerydslConfig.kt @@ -1,9 +1,10 @@ package team.aliens.dms.global.config +import com.querydsl.jpa.JPQLTemplates import com.querydsl.jpa.impl.JPAQueryFactory +import jakarta.persistence.EntityManager import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration -import javax.persistence.EntityManager @Configuration class QuerydslConfig( @@ -11,5 +12,5 @@ class QuerydslConfig( ) { @Bean - protected fun queryFactory() = JPAQueryFactory(entityManager) + protected fun queryFactory() = JPAQueryFactory(JPQLTemplates.DEFAULT, entityManager) } diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/global/config/RedisConfig.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/global/config/RedisConfig.kt index ec5e47010..06f491d41 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/global/config/RedisConfig.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/global/config/RedisConfig.kt @@ -12,13 +12,13 @@ import java.time.Duration @Configuration class RedisConfig( - @Value("\${spring.redis.host}") + @Value("\${spring.data.redis.host}") private val redisHost: String, - @Value("\${spring.redis.port}") + @Value("\${spring.data.redis.port}") private val redisPort: Int, - @Value("\${spring.redis.password}") + @Value("\${spring.data.redis.password}") private val redisPassword: String ) { diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/BaseEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/BaseEntity.kt index e1f2a9941..20d20e433 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/BaseEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/BaseEntity.kt @@ -1,11 +1,11 @@ package team.aliens.dms.persistence +import jakarta.persistence.Column +import jakarta.persistence.GeneratedValue +import jakarta.persistence.Id +import jakarta.persistence.MappedSuperclass import org.hibernate.annotations.GenericGenerator import java.util.UUID -import javax.persistence.Column -import javax.persistence.GeneratedValue -import javax.persistence.Id -import javax.persistence.MappedSuperclass @MappedSuperclass abstract class BaseEntity( diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/BaseTimeEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/BaseTimeEntity.kt index 1c629ba98..73014a92f 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/BaseTimeEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/BaseTimeEntity.kt @@ -1,8 +1,8 @@ package team.aliens.dms.persistence +import jakarta.persistence.Column +import jakarta.persistence.MappedSuperclass import java.time.LocalDateTime -import javax.persistence.Column -import javax.persistence.MappedSuperclass @MappedSuperclass abstract class BaseTimeEntity( diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/BaseUUIDEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/BaseUUIDEntity.kt index 04691ce85..178a20b0e 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/BaseUUIDEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/BaseUUIDEntity.kt @@ -1,11 +1,11 @@ package team.aliens.dms.persistence +import jakarta.persistence.Column +import jakarta.persistence.GeneratedValue +import jakarta.persistence.Id +import jakarta.persistence.MappedSuperclass import org.hibernate.annotations.GenericGenerator import java.util.UUID -import javax.persistence.Column -import javax.persistence.GeneratedValue -import javax.persistence.Id -import javax.persistence.MappedSuperclass @MappedSuperclass abstract class BaseUUIDEntity( diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/manager/entity/ManagerJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/manager/entity/ManagerJpaEntity.kt index 22b5228dc..465543350 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/manager/entity/ManagerJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/manager/entity/ManagerJpaEntity.kt @@ -1,15 +1,15 @@ package team.aliens.dms.persistence.manager.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.Id +import jakarta.persistence.JoinColumn +import jakarta.persistence.MapsId +import jakarta.persistence.OneToOne +import jakarta.persistence.Table import team.aliens.dms.persistence.user.entity.UserJpaEntity import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.FetchType -import javax.persistence.Id -import javax.persistence.JoinColumn -import javax.persistence.MapsId -import javax.persistence.OneToOne -import javax.persistence.Table @Entity @Table(name = "tbl_manager") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/meal/entity/MealJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/meal/entity/MealJpaEntity.kt index f59b4e215..727d487dc 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/meal/entity/MealJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/meal/entity/MealJpaEntity.kt @@ -1,18 +1,18 @@ package team.aliens.dms.persistence.meal.entity +import jakarta.persistence.Column +import jakarta.persistence.Embeddable +import jakarta.persistence.EmbeddedId +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.MapsId +import jakarta.persistence.Table import team.aliens.dms.persistence.school.entity.SchoolJpaEntity import java.io.Serializable import java.time.LocalDate import java.util.UUID -import javax.persistence.Column -import javax.persistence.Embeddable -import javax.persistence.EmbeddedId -import javax.persistence.Entity -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.MapsId -import javax.persistence.Table @Entity @Table(name = "tbl_meal") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/notice/entity/NoticeJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/notice/entity/NoticeJpaEntity.kt index 1d20e6778..4cda833f7 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/notice/entity/NoticeJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/notice/entity/NoticeJpaEntity.kt @@ -1,15 +1,15 @@ package team.aliens.dms.persistence.notice.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.Table import team.aliens.dms.persistence.BaseEntity import team.aliens.dms.persistence.manager.entity.ManagerJpaEntity import java.time.LocalDateTime import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.Table @Entity @Table(name = "tbl_notice") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/notification/entity/DeviceTokenJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/notification/entity/DeviceTokenJpaEntity.kt index 3287281a1..35e1c5d1a 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/notification/entity/DeviceTokenJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/notification/entity/DeviceTokenJpaEntity.kt @@ -1,15 +1,15 @@ package team.aliens.dms.persistence.notification.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.Table import team.aliens.dms.persistence.BaseUUIDEntity import team.aliens.dms.persistence.school.entity.SchoolJpaEntity import team.aliens.dms.persistence.user.entity.UserJpaEntity import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.Table @Entity @Table(name = "tbl_device_token") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/notification/entity/NotificationOfUserJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/notification/entity/NotificationOfUserJpaEntity.kt index 657f62d32..5941ff74d 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/notification/entity/NotificationOfUserJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/notification/entity/NotificationOfUserJpaEntity.kt @@ -1,19 +1,19 @@ package team.aliens.dms.persistence.notification.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.EnumType +import jakarta.persistence.Enumerated +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.Table import org.hibernate.annotations.ColumnDefault import team.aliens.dms.domain.notification.model.Topic import team.aliens.dms.persistence.BaseUUIDEntity import team.aliens.dms.persistence.user.entity.UserJpaEntity import java.time.LocalDateTime import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.EnumType -import javax.persistence.Enumerated -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.Table @Entity @Table(name = "tbl_notification_of_user") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/notification/entity/TopicSubscriptionJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/notification/entity/TopicSubscriptionJpaEntity.kt index 509e37f30..5ff86958d 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/notification/entity/TopicSubscriptionJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/notification/entity/TopicSubscriptionJpaEntity.kt @@ -1,19 +1,19 @@ package team.aliens.dms.persistence.notification.entity +import jakarta.persistence.Column +import jakarta.persistence.Embeddable +import jakarta.persistence.EmbeddedId +import jakarta.persistence.Entity +import jakarta.persistence.EnumType +import jakarta.persistence.Enumerated +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.MapsId +import jakarta.persistence.Table import team.aliens.dms.domain.notification.model.Topic import java.io.Serializable import java.util.UUID -import javax.persistence.Column -import javax.persistence.Embeddable -import javax.persistence.EmbeddedId -import javax.persistence.Entity -import javax.persistence.EnumType -import javax.persistence.Enumerated -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.MapsId -import javax.persistence.Table @Entity @Table(name = "tbl_topic_subscription") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/point/entity/PhraseJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/point/entity/PhraseJpaEntity.kt index ad1f84d61..433ae1b9e 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/point/entity/PhraseJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/point/entity/PhraseJpaEntity.kt @@ -1,13 +1,13 @@ package team.aliens.dms.persistence.point.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.EnumType +import jakarta.persistence.Enumerated +import jakarta.persistence.Table import team.aliens.dms.domain.point.model.PointType import team.aliens.dms.persistence.BaseUUIDEntity import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.EnumType -import javax.persistence.Enumerated -import javax.persistence.Table @Entity @Table(name = "tbl_phrase") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/point/entity/PointFilterJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/point/entity/PointFilterJpaEntity.kt index a24d17492..ce3857749 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/point/entity/PointFilterJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/point/entity/PointFilterJpaEntity.kt @@ -1,18 +1,18 @@ package team.aliens.dms.persistence.point.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.EnumType +import jakarta.persistence.Enumerated +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.Table +import jakarta.persistence.UniqueConstraint import team.aliens.dms.domain.point.model.PointType import team.aliens.dms.persistence.BaseUUIDEntity import team.aliens.dms.persistence.school.entity.SchoolJpaEntity import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.EnumType -import javax.persistence.Enumerated -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.Table -import javax.persistence.UniqueConstraint @Entity @Table( diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/point/entity/PointHistoryJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/point/entity/PointHistoryJpaEntity.kt index 901e2bb3c..d948f467c 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/point/entity/PointHistoryJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/point/entity/PointHistoryJpaEntity.kt @@ -1,18 +1,18 @@ package team.aliens.dms.persistence.point.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.EnumType +import jakarta.persistence.Enumerated +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.Table import team.aliens.dms.domain.point.model.PointType import team.aliens.dms.persistence.BaseEntity import team.aliens.dms.persistence.school.entity.SchoolJpaEntity import java.time.LocalDateTime import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.EnumType -import javax.persistence.Enumerated -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.Table @Entity @Table(name = "tbl_point_history") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/point/entity/PointOptionJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/point/entity/PointOptionJpaEntity.kt index 613e75339..84d1a5104 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/point/entity/PointOptionJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/point/entity/PointOptionJpaEntity.kt @@ -1,17 +1,17 @@ package team.aliens.dms.persistence.point.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.EnumType +import jakarta.persistence.Enumerated +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.Table import team.aliens.dms.domain.point.model.PointType import team.aliens.dms.persistence.BaseUUIDEntity import team.aliens.dms.persistence.school.entity.SchoolJpaEntity import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.EnumType -import javax.persistence.Enumerated -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.Table @Entity @Table(name = "tbl_point_option") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/remain/entity/RemainAvailableTimeJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/remain/entity/RemainAvailableTimeJpaEntity.kt index 8d6c2f7c8..4281a6c33 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/remain/entity/RemainAvailableTimeJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/remain/entity/RemainAvailableTimeJpaEntity.kt @@ -1,19 +1,19 @@ package team.aliens.dms.persistence.remain.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.EnumType +import jakarta.persistence.Enumerated +import jakarta.persistence.FetchType +import jakarta.persistence.Id +import jakarta.persistence.JoinColumn +import jakarta.persistence.MapsId +import jakarta.persistence.OneToOne +import jakarta.persistence.Table import team.aliens.dms.persistence.school.entity.SchoolJpaEntity import java.time.DayOfWeek import java.time.LocalTime import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.EnumType -import javax.persistence.Enumerated -import javax.persistence.FetchType -import javax.persistence.Id -import javax.persistence.JoinColumn -import javax.persistence.MapsId -import javax.persistence.OneToOne -import javax.persistence.Table @Entity @Table(name = "tbl_remain_available_time") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/remain/entity/RemainOptionJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/remain/entity/RemainOptionJpaEntity.kt index bf06b5fd3..d5651659e 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/remain/entity/RemainOptionJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/remain/entity/RemainOptionJpaEntity.kt @@ -1,14 +1,14 @@ package team.aliens.dms.persistence.remain.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.Table import team.aliens.dms.persistence.BaseUUIDEntity import team.aliens.dms.persistence.school.entity.SchoolJpaEntity import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.Table @Entity @Table(name = "tbl_remain_option") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/remain/entity/RemainStatusJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/remain/entity/RemainStatusJpaEntity.kt index 4e3868b44..7aed638f4 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/remain/entity/RemainStatusJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/remain/entity/RemainStatusJpaEntity.kt @@ -1,19 +1,19 @@ package team.aliens.dms.persistence.remain.entity +import jakarta.persistence.CascadeType +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.Id +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.MapsId +import jakarta.persistence.OneToOne +import jakarta.persistence.Table import team.aliens.dms.persistence.BaseTimeEntity import team.aliens.dms.persistence.student.entity.StudentJpaEntity import java.time.LocalDateTime import java.util.UUID -import javax.persistence.CascadeType -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.FetchType -import javax.persistence.Id -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.MapsId -import javax.persistence.OneToOne -import javax.persistence.Table @Entity @Table(name = "tbl_remain_status") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/room/entity/RoomJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/room/entity/RoomJpaEntity.kt index 1b9e9e361..79f182f13 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/room/entity/RoomJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/room/entity/RoomJpaEntity.kt @@ -1,15 +1,15 @@ package team.aliens.dms.persistence.room.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.Table +import jakarta.persistence.UniqueConstraint import team.aliens.dms.persistence.BaseUUIDEntity import team.aliens.dms.persistence.school.entity.SchoolJpaEntity import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.Table -import javax.persistence.UniqueConstraint @Entity @Table( diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/school/entity/AvailableFeatureJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/school/entity/AvailableFeatureJpaEntity.kt index 659c9a1a1..0f9431ed6 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/school/entity/AvailableFeatureJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/school/entity/AvailableFeatureJpaEntity.kt @@ -1,14 +1,14 @@ package team.aliens.dms.persistence.school.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.Id +import jakarta.persistence.JoinColumn +import jakarta.persistence.MapsId +import jakarta.persistence.OneToOne +import jakarta.persistence.Table import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.FetchType -import javax.persistence.Id -import javax.persistence.JoinColumn -import javax.persistence.MapsId -import javax.persistence.OneToOne -import javax.persistence.Table @Entity @Table(name = "tbl_available_feature") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/school/entity/SchoolJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/school/entity/SchoolJpaEntity.kt index f1b6b0081..66d1a6acb 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/school/entity/SchoolJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/school/entity/SchoolJpaEntity.kt @@ -1,12 +1,12 @@ package team.aliens.dms.persistence.school.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.Table +import jakarta.persistence.UniqueConstraint import team.aliens.dms.persistence.BaseUUIDEntity import java.time.LocalDate import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.Table -import javax.persistence.UniqueConstraint @Entity @Table( diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/student/entity/StudentJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/student/entity/StudentJpaEntity.kt index ee19349d7..5ee9661c3 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/student/entity/StudentJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/student/entity/StudentJpaEntity.kt @@ -1,26 +1,26 @@ package team.aliens.dms.persistence.student.entity -import org.hibernate.annotations.Where +import jakarta.persistence.CascadeType +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.EnumType +import jakarta.persistence.Enumerated +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.OneToOne +import jakarta.persistence.Table +import org.hibernate.annotations.SQLRestriction import team.aliens.dms.domain.student.model.Sex import team.aliens.dms.persistence.BaseUUIDEntity import team.aliens.dms.persistence.room.entity.RoomJpaEntity import team.aliens.dms.persistence.user.entity.UserJpaEntity import java.time.LocalDateTime import java.util.UUID -import javax.persistence.CascadeType -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.EnumType -import javax.persistence.Enumerated -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.OneToOne -import javax.persistence.Table @Entity @Table(name = "tbl_student") -@Where(clause = "deleted_at is null") +@SQLRestriction("deleted_at is null") class StudentJpaEntity( id: UUID?, @@ -56,5 +56,5 @@ class StudentJpaEntity( val sex: Sex, @Column(columnDefinition = "DATETIME") - val deletedAt: LocalDateTime? + val deletedAt: LocalDateTime?, ) : BaseUUIDEntity(id) diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/student/mapper/StudentMapper.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/student/mapper/StudentMapper.kt index b204206da..4d9dce577 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/student/mapper/StudentMapper.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/student/mapper/StudentMapper.kt @@ -47,7 +47,7 @@ class StudentMapper( classRoom = domain.classRoom, number = domain.number, name = domain.name, - profileImageUrl = domain.profileImageUrl!!, + profileImageUrl = domain.profileImageUrl, sex = domain.sex, deletedAt = domain.deletedAt ) diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/AvailableTimeJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/AvailableTimeJpaEntity.kt index b869661a8..1842fee22 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/AvailableTimeJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/AvailableTimeJpaEntity.kt @@ -1,16 +1,16 @@ package team.aliens.dms.persistence.studyroom.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.Id +import jakarta.persistence.JoinColumn +import jakarta.persistence.MapsId +import jakarta.persistence.OneToOne +import jakarta.persistence.Table import team.aliens.dms.persistence.school.entity.SchoolJpaEntity import java.time.LocalTime import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.FetchType -import javax.persistence.Id -import javax.persistence.JoinColumn -import javax.persistence.MapsId -import javax.persistence.OneToOne -import javax.persistence.Table @Entity @Table(name = "tbl_study_room_available_time") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/SeatApplicationJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/SeatApplicationJpaEntity.kt index f31b05556..b81983dfe 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/SeatApplicationJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/SeatApplicationJpaEntity.kt @@ -1,17 +1,17 @@ package team.aliens.dms.persistence.studyroom.entity +import jakarta.persistence.Column +import jakarta.persistence.Embeddable +import jakarta.persistence.EmbeddedId +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.MapsId +import jakarta.persistence.Table import team.aliens.dms.persistence.student.entity.StudentJpaEntity import java.io.Serializable import java.util.UUID -import javax.persistence.Column -import javax.persistence.Embeddable -import javax.persistence.EmbeddedId -import javax.persistence.Entity -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.MapsId -import javax.persistence.Table @Entity @Table(name = "tbl_seat_application") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/SeatJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/SeatJpaEntity.kt index 86360f481..7f40ff8c3 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/SeatJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/SeatJpaEntity.kt @@ -1,17 +1,17 @@ package team.aliens.dms.persistence.studyroom.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.EnumType +import jakarta.persistence.Enumerated +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.Table +import jakarta.persistence.UniqueConstraint import team.aliens.dms.domain.studyroom.model.SeatStatus import team.aliens.dms.persistence.BaseUUIDEntity import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.EnumType -import javax.persistence.Enumerated -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.Table -import javax.persistence.UniqueConstraint @Entity @Table( diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/SeatTypeJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/SeatTypeJpaEntity.kt index 9733b04e7..88c9f1664 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/SeatTypeJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/SeatTypeJpaEntity.kt @@ -1,14 +1,14 @@ package team.aliens.dms.persistence.studyroom.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.Table import team.aliens.dms.persistence.BaseUUIDEntity import team.aliens.dms.persistence.school.entity.SchoolJpaEntity import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.Table @Entity @Table(name = "tbl_seat_type") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/StudyRoomJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/StudyRoomJpaEntity.kt index 0fc6c66d2..a68afc66c 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/StudyRoomJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/StudyRoomJpaEntity.kt @@ -1,18 +1,18 @@ package team.aliens.dms.persistence.studyroom.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.EnumType +import jakarta.persistence.Enumerated +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.Table +import jakarta.persistence.UniqueConstraint import team.aliens.dms.domain.student.model.Sex import team.aliens.dms.persistence.BaseUUIDEntity import team.aliens.dms.persistence.school.entity.SchoolJpaEntity import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.EnumType -import javax.persistence.Enumerated -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.Table -import javax.persistence.UniqueConstraint @Entity @Table( diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/StudyRoomTimeSlotJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/StudyRoomTimeSlotJpaEntity.kt index 3908c3721..757bb6c69 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/StudyRoomTimeSlotJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/StudyRoomTimeSlotJpaEntity.kt @@ -1,16 +1,16 @@ package team.aliens.dms.persistence.studyroom.entity +import jakarta.persistence.Column +import jakarta.persistence.Embeddable +import jakarta.persistence.EmbeddedId +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.MapsId +import jakarta.persistence.Table import java.io.Serializable import java.util.UUID -import javax.persistence.Column -import javax.persistence.Embeddable -import javax.persistence.EmbeddedId -import javax.persistence.Entity -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.MapsId -import javax.persistence.Table @Entity @Table(name = "tbl_study_room_time_slot") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/TimeSlotJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/TimeSlotJpaEntity.kt index f774bf418..9b7f7946e 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/TimeSlotJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/studyroom/entity/TimeSlotJpaEntity.kt @@ -1,15 +1,15 @@ package team.aliens.dms.persistence.studyroom.entity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.Table import team.aliens.dms.persistence.BaseUUIDEntity import team.aliens.dms.persistence.school.entity.SchoolJpaEntity import java.time.LocalTime import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.Table @Entity @Table(name = "tbl_time_slot") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/tag/entity/StudentTagJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/tag/entity/StudentTagJpaEntity.kt index 179213830..a599630d9 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/tag/entity/StudentTagJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/tag/entity/StudentTagJpaEntity.kt @@ -1,14 +1,14 @@ package team.aliens.dms.persistence.tag.entity +import jakarta.persistence.EmbeddedId +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.MapsId +import jakarta.persistence.Table import team.aliens.dms.persistence.BaseTimeEntity import team.aliens.dms.persistence.student.entity.StudentJpaEntity -import javax.persistence.EmbeddedId -import javax.persistence.Entity -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.MapsId -import javax.persistence.Table @Entity @Table(name = "tbl_student_tag") diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/tag/entity/TagJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/tag/entity/TagJpaEntity.kt index d15496e50..41a26e3f3 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/tag/entity/TagJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/tag/entity/TagJpaEntity.kt @@ -1,17 +1,17 @@ package team.aliens.dms.persistence.tag.entity +import jakarta.persistence.Column +import jakarta.persistence.Embeddable +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.Table +import jakarta.persistence.UniqueConstraint import team.aliens.dms.persistence.BaseUUIDEntity import team.aliens.dms.persistence.school.entity.SchoolJpaEntity import java.io.Serializable import java.util.UUID -import javax.persistence.Column -import javax.persistence.Embeddable -import javax.persistence.Entity -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.Table -import javax.persistence.UniqueConstraint @Entity @Table( diff --git a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/user/entity/UserJpaEntity.kt b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/user/entity/UserJpaEntity.kt index b9eb50fee..0169ee68b 100644 --- a/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/user/entity/UserJpaEntity.kt +++ b/dms-persistence/src/main/kotlin/team/aliens/dms/persistence/user/entity/UserJpaEntity.kt @@ -1,23 +1,23 @@ package team.aliens.dms.persistence.user.entity -import org.hibernate.annotations.Where +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.EnumType +import jakarta.persistence.Enumerated +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.Table +import org.hibernate.annotations.SQLRestriction import team.aliens.dms.domain.auth.model.Authority import team.aliens.dms.persistence.BaseEntity import team.aliens.dms.persistence.school.entity.SchoolJpaEntity import java.time.LocalDateTime import java.util.UUID -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.EnumType -import javax.persistence.Enumerated -import javax.persistence.FetchType -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.Table @Entity @Table(name = "tbl_user") -@Where(clause = "deleted_at is null") +@SQLRestriction("deleted_at is null") class UserJpaEntity( id: UUID?, @@ -42,6 +42,6 @@ class UserJpaEntity( override val createdAt: LocalDateTime, @Column(columnDefinition = "DATETIME") - val deletedAt: LocalDateTime? + val deletedAt: LocalDateTime?, ) : BaseEntity(id) diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/common/extension/FileExtension.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/common/extension/FileExtension.kt index 13096ea42..c9d97754b 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/common/extension/FileExtension.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/common/extension/FileExtension.kt @@ -1,12 +1,12 @@ package team.aliens.dms.common.extension +import jakarta.servlet.http.HttpServletResponse import org.springframework.http.HttpHeaders import org.springframework.web.multipart.MultipartFile import java.io.File import java.io.FileOutputStream import java.net.URLEncoder import java.util.UUID -import javax.servlet.http.HttpServletResponse fun MultipartFile.toFile() = File("${UUID.randomUUID()}||$originalFilename").let { diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/common/validator/NotNullElementsValidator.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/common/validator/NotNullElementsValidator.kt index 7ab842cdb..cfc3750c4 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/common/validator/NotNullElementsValidator.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/common/validator/NotNullElementsValidator.kt @@ -1,8 +1,8 @@ package team.aliens.dms.common.validator -import javax.validation.Constraint -import javax.validation.ConstraintValidator -import javax.validation.ConstraintValidatorContext +import jakarta.validation.Constraint +import jakarta.validation.ConstraintValidator +import jakarta.validation.ConstraintValidatorContext import kotlin.reflect.KClass @Target(AnnotationTarget.FIELD) diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/auth/AuthWebAdapter.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/auth/AuthWebAdapter.kt index cbd49908a..00f70c205 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/auth/AuthWebAdapter.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/auth/AuthWebAdapter.kt @@ -1,5 +1,9 @@ package team.aliens.dms.domain.auth +import jakarta.validation.Valid +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.NotNull import org.hibernate.validator.constraints.Length import org.springframework.validation.annotation.Validated import org.springframework.web.bind.annotation.GetMapping @@ -25,10 +29,6 @@ import team.aliens.dms.domain.auth.usecase.CheckAccountIdExistenceUseCase import team.aliens.dms.domain.auth.usecase.ReissueTokenUseCase import team.aliens.dms.domain.auth.usecase.SendEmailCodeUseCase import team.aliens.dms.domain.auth.usecase.SignInUseCase -import javax.validation.Valid -import javax.validation.constraints.Email -import javax.validation.constraints.NotBlank -import javax.validation.constraints.NotNull @Validated @RequestMapping("/auth") @@ -96,7 +96,9 @@ class AuthWebAdapter( } @GetMapping("/account-id") - fun checkAccountIdExistence(@RequestParam("account_id") @NotBlank accountId: String): CheckAccountIdExistenceResponse { + fun checkAccountIdExistence( + @RequestParam("account_id") @NotBlank accountId: String + ): CheckAccountIdExistenceResponse { return CheckAccountIdExistenceResponse( checkAccountIdExistenceUseCase.execute(accountId) ) diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/auth/dto/request/SendEmailCodeWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/auth/dto/request/SendEmailCodeWebRequest.kt index 45c602b70..c1882d965 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/auth/dto/request/SendEmailCodeWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/auth/dto/request/SendEmailCodeWebRequest.kt @@ -1,9 +1,9 @@ package team.aliens.dms.domain.auth.dto.request -import javax.validation.constraints.Email -import javax.validation.constraints.NotBlank -import javax.validation.constraints.NotNull -import javax.validation.constraints.Size +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size data class SendEmailCodeWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/auth/dto/request/SignInWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/auth/dto/request/SignInWebRequest.kt index 041b0a081..62cc3084a 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/auth/dto/request/SignInWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/auth/dto/request/SignInWebRequest.kt @@ -1,7 +1,7 @@ package team.aliens.dms.domain.auth.dto.request -import javax.validation.constraints.NotBlank -import javax.validation.constraints.Size +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.Size data class SignInWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/file/FileWebAdapter.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/file/FileWebAdapter.kt index e53e2fa70..e90938f4f 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/file/FileWebAdapter.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/file/FileWebAdapter.kt @@ -1,5 +1,6 @@ package team.aliens.dms.domain.file +import jakarta.validation.constraints.NotNull import org.springframework.validation.annotation.Validated import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.PostMapping @@ -13,7 +14,6 @@ import team.aliens.dms.domain.file.dto.GetFileUploadUrlResponse import team.aliens.dms.domain.file.dto.response.UploadFileResponse import team.aliens.dms.domain.file.usecase.GetFileUploadUrlUseCase import team.aliens.dms.domain.file.usecase.UploadFileUseCase -import javax.validation.constraints.NotNull @Validated @RequestMapping("/files") diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/manager/ManagerWebAdapter.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/manager/ManagerWebAdapter.kt index 7e84a8ee4..53445294b 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/manager/ManagerWebAdapter.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/manager/ManagerWebAdapter.kt @@ -1,5 +1,8 @@ package team.aliens.dms.domain.manager +import jakarta.validation.Valid +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.NotNull import org.springframework.http.HttpStatus import org.springframework.validation.annotation.Validated import org.springframework.web.bind.annotation.GetMapping @@ -18,9 +21,6 @@ import team.aliens.dms.domain.manager.usecase.FindManagerAccountIdUseCase import team.aliens.dms.domain.manager.usecase.ManagerMyPageUseCase import team.aliens.dms.domain.manager.usecase.ResetManagerPasswordUseCase import java.util.UUID -import javax.validation.Valid -import javax.validation.constraints.NotBlank -import javax.validation.constraints.NotNull @Validated @RequestMapping("/managers") diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/manager/dto/request/ResetPasswordManagerWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/manager/dto/request/ResetPasswordManagerWebRequest.kt index 627dae6fe..283162cc9 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/manager/dto/request/ResetPasswordManagerWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/manager/dto/request/ResetPasswordManagerWebRequest.kt @@ -1,9 +1,9 @@ package team.aliens.dms.domain.manager.dto.request -import javax.validation.constraints.Email -import javax.validation.constraints.NotBlank -import javax.validation.constraints.Pattern -import javax.validation.constraints.Size +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.Pattern +import jakarta.validation.constraints.Size data class ResetPasswordManagerWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/meal/MealWebAdapter.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/meal/MealWebAdapter.kt index b74c034ee..24b838bb4 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/meal/MealWebAdapter.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/meal/MealWebAdapter.kt @@ -1,5 +1,6 @@ package team.aliens.dms.domain.meal +import jakarta.validation.constraints.NotNull import org.springframework.format.annotation.DateTimeFormat import org.springframework.validation.annotation.Validated import org.springframework.web.bind.annotation.GetMapping @@ -9,7 +10,6 @@ import org.springframework.web.bind.annotation.RestController import team.aliens.dms.domain.meal.dto.QueryMealsResponse import team.aliens.dms.domain.meal.usecase.QueryMealsUseCase import java.time.LocalDate -import javax.validation.constraints.NotNull @Validated @RequestMapping("/meals") @@ -19,7 +19,9 @@ class MealWebAdapter( ) { @GetMapping("/{date}") - fun getMeals(@PathVariable("date") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) @NotNull mealDate: LocalDate): QueryMealsResponse { + fun getMeals( + @PathVariable("date") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) @NotNull mealDate: LocalDate + ): QueryMealsResponse { return queryMealsUseCase.execute(mealDate) } } diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/notice/NoticeWebAdapter.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/notice/NoticeWebAdapter.kt index 8dac59818..618d6ac0c 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/notice/NoticeWebAdapter.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/notice/NoticeWebAdapter.kt @@ -1,5 +1,7 @@ package team.aliens.dms.domain.notice +import jakarta.validation.Valid +import jakarta.validation.constraints.NotNull import org.springframework.http.HttpStatus import org.springframework.validation.annotation.Validated import org.springframework.web.bind.annotation.DeleteMapping @@ -26,8 +28,6 @@ import team.aliens.dms.domain.notice.usecase.QueryNoticeStatusUseCase import team.aliens.dms.domain.notice.usecase.RemoveNoticeUseCase import team.aliens.dms.domain.notice.usecase.UpdateNoticeUseCase import java.util.UUID -import javax.validation.Valid -import javax.validation.constraints.NotNull @Validated @RequestMapping("/notices") diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/notice/dto/request/CreateNoticeWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/notice/dto/request/CreateNoticeWebRequest.kt index ff0c7959d..e40923e5e 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/notice/dto/request/CreateNoticeWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/notice/dto/request/CreateNoticeWebRequest.kt @@ -1,7 +1,7 @@ package team.aliens.dms.domain.notice.dto.request -import javax.validation.constraints.NotBlank -import javax.validation.constraints.Size +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.Size data class CreateNoticeWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/notice/dto/request/UpdateNoticeWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/notice/dto/request/UpdateNoticeWebRequest.kt index 5903344d9..4b71d17c2 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/notice/dto/request/UpdateNoticeWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/notice/dto/request/UpdateNoticeWebRequest.kt @@ -1,7 +1,7 @@ package team.aliens.dms.domain.notice.dto.request -import javax.validation.constraints.NotBlank -import javax.validation.constraints.Size +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.Size data class UpdateNoticeWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/notification/NotificationWebAdapter.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/notification/NotificationWebAdapter.kt index 3721938bd..34e681a4b 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/notification/NotificationWebAdapter.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/notification/NotificationWebAdapter.kt @@ -1,5 +1,6 @@ package team.aliens.dms.domain.notification +import jakarta.validation.Valid import org.springframework.http.HttpStatus import org.springframework.validation.annotation.Validated import org.springframework.web.bind.annotation.DeleteMapping @@ -28,7 +29,6 @@ import team.aliens.dms.domain.notification.usecase.SubscribeTopicUseCase import team.aliens.dms.domain.notification.usecase.UnsubscribeTopicUseCase import team.aliens.dms.domain.notification.usecase.UpdateTopicSubscriptionsUseCase import java.util.UUID -import javax.validation.Valid @Validated @RequestMapping("/notifications") diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/point/PointWebAdapter.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/point/PointWebAdapter.kt index b4bfd5a5e..7381086f1 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/point/PointWebAdapter.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/point/PointWebAdapter.kt @@ -1,5 +1,8 @@ package team.aliens.dms.domain.point +import jakarta.servlet.http.HttpServletResponse +import jakarta.validation.Valid +import jakarta.validation.constraints.NotNull import org.springframework.format.annotation.DateTimeFormat import org.springframework.http.HttpStatus import org.springframework.validation.annotation.Validated @@ -41,9 +44,6 @@ import team.aliens.dms.domain.point.usecase.RemovePointOptionUseCase import team.aliens.dms.domain.point.usecase.UpdatePointOptionUseCase import java.time.LocalDateTime import java.util.UUID -import javax.servlet.http.HttpServletResponse -import javax.validation.Valid -import javax.validation.constraints.NotNull @Validated @RequestMapping("/points") diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/point/dto/request/CreatePointOptionWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/point/dto/request/CreatePointOptionWebRequest.kt index 60dc5ae94..94bdf482d 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/point/dto/request/CreatePointOptionWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/point/dto/request/CreatePointOptionWebRequest.kt @@ -1,8 +1,8 @@ package team.aliens.dms.domain.point.dto.request -import javax.validation.constraints.NotBlank -import javax.validation.constraints.NotNull -import javax.validation.constraints.Size +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size data class CreatePointOptionWebRequest( @field:NotBlank diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/point/dto/request/GrantPointWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/point/dto/request/GrantPointWebRequest.kt index a78a7cc08..93454440a 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/point/dto/request/GrantPointWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/point/dto/request/GrantPointWebRequest.kt @@ -1,8 +1,8 @@ package team.aliens.dms.domain.point.dto.request +import jakarta.validation.constraints.NotNull import team.aliens.dms.common.validator.NotNullElements import java.util.UUID -import javax.validation.constraints.NotNull data class GrantPointWebRequest( @field:NotNull diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/point/dto/request/UpdatePointOptionWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/point/dto/request/UpdatePointOptionWebRequest.kt index 78b36902c..380d3d90a 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/point/dto/request/UpdatePointOptionWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/point/dto/request/UpdatePointOptionWebRequest.kt @@ -1,8 +1,8 @@ package team.aliens.dms.domain.point.dto.request -import javax.validation.constraints.NotBlank -import javax.validation.constraints.NotNull -import javax.validation.constraints.Size +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size data class UpdatePointOptionWebRequest( @field:NotBlank diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/remain/RemainWebAdapter.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/remain/RemainWebAdapter.kt index 6c10f8929..32f44d3a3 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/remain/RemainWebAdapter.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/remain/RemainWebAdapter.kt @@ -1,5 +1,8 @@ package team.aliens.dms.domain.remain +import jakarta.servlet.http.HttpServletResponse +import jakarta.validation.Valid +import jakarta.validation.constraints.NotNull import org.springframework.http.HttpStatus import org.springframework.validation.annotation.Validated import org.springframework.web.bind.annotation.DeleteMapping @@ -31,9 +34,6 @@ import team.aliens.dms.domain.remain.usecase.RemoveRemainOptionUseCase import team.aliens.dms.domain.remain.usecase.UpdateRemainAvailableTimeUseCase import team.aliens.dms.domain.remain.usecase.UpdateRemainOptionUseCase import java.util.UUID -import javax.servlet.http.HttpServletResponse -import javax.validation.Valid -import javax.validation.constraints.NotNull @Validated @RequestMapping("/remains") diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/remain/dto/request/CreateRemainOptionWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/remain/dto/request/CreateRemainOptionWebRequest.kt index 617b14a1a..4291e9619 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/remain/dto/request/CreateRemainOptionWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/remain/dto/request/CreateRemainOptionWebRequest.kt @@ -1,7 +1,7 @@ package team.aliens.dms.domain.remain.dto.request -import javax.validation.constraints.NotBlank -import javax.validation.constraints.Size +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.Size data class CreateRemainOptionWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/remain/dto/request/UpdateRemainAvailableTimeWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/remain/dto/request/UpdateRemainAvailableTimeWebRequest.kt index 12752a296..20dc949e5 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/remain/dto/request/UpdateRemainAvailableTimeWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/remain/dto/request/UpdateRemainAvailableTimeWebRequest.kt @@ -1,8 +1,8 @@ package team.aliens.dms.domain.remain.dto.request +import jakarta.validation.constraints.NotNull import java.time.DayOfWeek import java.time.LocalTime -import javax.validation.constraints.NotNull data class UpdateRemainAvailableTimeWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/remain/dto/request/UpdateRemainOptionWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/remain/dto/request/UpdateRemainOptionWebRequest.kt index a9b7d9ce7..f71caa451 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/remain/dto/request/UpdateRemainOptionWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/remain/dto/request/UpdateRemainOptionWebRequest.kt @@ -1,7 +1,7 @@ package team.aliens.dms.domain.remain.dto.request -import javax.validation.constraints.NotBlank -import javax.validation.constraints.Size +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.Size data class UpdateRemainOptionWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/school/SchoolWebAdapter.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/school/SchoolWebAdapter.kt index 06eec3054..3ff11c04d 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/school/SchoolWebAdapter.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/school/SchoolWebAdapter.kt @@ -1,5 +1,9 @@ package team.aliens.dms.domain.school +import jakarta.validation.Valid +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size import org.springframework.http.HttpStatus import org.springframework.validation.annotation.Validated import org.springframework.web.bind.annotation.GetMapping @@ -25,10 +29,6 @@ import team.aliens.dms.domain.school.usecase.QuerySchoolsUseCase import team.aliens.dms.domain.school.usecase.ReissueSchoolCodeUseCase import team.aliens.dms.domain.school.usecase.UpdateQuestionUseCase import java.util.UUID -import javax.validation.Valid -import javax.validation.constraints.NotBlank -import javax.validation.constraints.NotNull -import javax.validation.constraints.Size @Validated @RequestMapping("/schools") diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/school/dto/request/UpdateQuestionWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/school/dto/request/UpdateQuestionWebRequest.kt index dcdd6ea77..33b414874 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/school/dto/request/UpdateQuestionWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/school/dto/request/UpdateQuestionWebRequest.kt @@ -1,7 +1,7 @@ package team.aliens.dms.domain.school.dto.request -import javax.validation.constraints.NotBlank -import javax.validation.constraints.Size +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.Size data class UpdateQuestionWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/student/StudentWebAdapter.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/student/StudentWebAdapter.kt index 6bfef3460..29f37ce0e 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/student/StudentWebAdapter.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/student/StudentWebAdapter.kt @@ -1,5 +1,10 @@ package team.aliens.dms.domain.student +import jakarta.servlet.http.HttpServletResponse +import jakarta.validation.Valid +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.NotNull import org.springframework.http.HttpStatus import org.springframework.validation.annotation.Validated import org.springframework.web.bind.annotation.DeleteMapping @@ -48,11 +53,6 @@ import team.aliens.dms.domain.student.usecase.UpdateStudentGcnByFileUseCase import team.aliens.dms.domain.student.usecase.UpdateStudentProfileUseCase import team.aliens.dms.domain.student.usecase.UpdateStudentRoomByFileUseCase import java.util.UUID -import javax.servlet.http.HttpServletResponse -import javax.validation.Valid -import javax.validation.constraints.Email -import javax.validation.constraints.NotBlank -import javax.validation.constraints.NotNull @Validated @RequestMapping("/students") diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/student/dto/request/ResetStudentPasswordWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/student/dto/request/ResetStudentPasswordWebRequest.kt index 7e9ab8091..c8018470a 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/student/dto/request/ResetStudentPasswordWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/student/dto/request/ResetStudentPasswordWebRequest.kt @@ -1,10 +1,10 @@ package team.aliens.dms.domain.student.dto.request +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.Pattern +import jakarta.validation.constraints.Size import team.aliens.dms.domain.manager.dto.request.Password -import javax.validation.constraints.Email -import javax.validation.constraints.NotBlank -import javax.validation.constraints.Pattern -import javax.validation.constraints.Size data class ResetStudentPasswordWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/student/dto/request/SignUpWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/student/dto/request/SignUpWebRequest.kt index ff51c6e72..6415827ec 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/student/dto/request/SignUpWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/student/dto/request/SignUpWebRequest.kt @@ -1,13 +1,13 @@ package team.aliens.dms.domain.student.dto.request +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.Max +import jakarta.validation.constraints.Min +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Pattern +import jakarta.validation.constraints.Size import team.aliens.dms.domain.manager.dto.request.Password -import javax.validation.constraints.Email -import javax.validation.constraints.Max -import javax.validation.constraints.Min -import javax.validation.constraints.NotBlank -import javax.validation.constraints.NotNull -import javax.validation.constraints.Pattern -import javax.validation.constraints.Size data class SignUpWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/student/dto/request/UpdateStudentProfileWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/student/dto/request/UpdateStudentProfileWebRequest.kt index 5acf9df70..e21eebba9 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/student/dto/request/UpdateStudentProfileWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/student/dto/request/UpdateStudentProfileWebRequest.kt @@ -1,7 +1,7 @@ package team.aliens.dms.domain.student.dto.request -import javax.validation.constraints.NotBlank -import javax.validation.constraints.Size +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.Size data class UpdateStudentProfileWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/StudyRoomWebAdapter.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/StudyRoomWebAdapter.kt index 10098b59d..237cccca6 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/StudyRoomWebAdapter.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/StudyRoomWebAdapter.kt @@ -1,5 +1,8 @@ package team.aliens.dms.domain.studyroom +import jakarta.servlet.http.HttpServletResponse +import jakarta.validation.Valid +import jakarta.validation.constraints.NotNull import org.springframework.http.HttpStatus import org.springframework.validation.annotation.Validated import org.springframework.web.bind.annotation.DeleteMapping @@ -53,9 +56,6 @@ import team.aliens.dms.domain.studyroom.usecase.UpdateAvailableTimeUseCase import team.aliens.dms.domain.studyroom.usecase.UpdateStudyRoomUseCase import team.aliens.dms.domain.studyroom.usecase.UpdateTimeSlotUseCase import java.util.UUID -import javax.servlet.http.HttpServletResponse -import javax.validation.Valid -import javax.validation.constraints.NotNull @Validated @RequestMapping("/study-rooms") diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/CreateSeatTypeWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/CreateSeatTypeWebRequest.kt index b6d76f065..f6bb228b6 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/CreateSeatTypeWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/CreateSeatTypeWebRequest.kt @@ -1,7 +1,7 @@ package team.aliens.dms.domain.studyroom.dto -import javax.validation.constraints.NotBlank -import javax.validation.constraints.Size +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.Size data class CreateSeatTypeWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/CreateStudyRoomWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/CreateStudyRoomWebRequest.kt index f3bcb3e64..482d26d88 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/CreateStudyRoomWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/CreateStudyRoomWebRequest.kt @@ -1,12 +1,12 @@ package team.aliens.dms.domain.studyroom.dto +import jakarta.validation.Valid +import jakarta.validation.constraints.Min +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size import team.aliens.dms.common.validator.NotNullElements import java.util.UUID -import javax.validation.Valid -import javax.validation.constraints.Min -import javax.validation.constraints.NotBlank -import javax.validation.constraints.NotNull -import javax.validation.constraints.Size data class CreateStudyRoomWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/CreateTimeSlotWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/CreateTimeSlotWebRequest.kt index df2441ff1..23a23b80e 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/CreateTimeSlotWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/CreateTimeSlotWebRequest.kt @@ -1,7 +1,7 @@ package team.aliens.dms.domain.studyroom.dto +import jakarta.validation.constraints.NotNull import java.time.LocalTime -import javax.validation.constraints.NotNull data class CreateTimeSlotWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/UpdateAvailableTimeWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/UpdateAvailableTimeWebRequest.kt index aabab4720..a5ca33ed4 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/UpdateAvailableTimeWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/UpdateAvailableTimeWebRequest.kt @@ -1,7 +1,7 @@ package team.aliens.dms.domain.studyroom.dto +import jakarta.validation.constraints.NotNull import java.time.LocalTime -import javax.validation.constraints.NotNull data class UpdateAvailableTimeWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/UpdateStudyRoomWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/UpdateStudyRoomWebRequest.kt index 6e06cefd2..19858d9aa 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/UpdateStudyRoomWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/UpdateStudyRoomWebRequest.kt @@ -1,12 +1,12 @@ package team.aliens.dms.domain.studyroom.dto +import jakarta.validation.Valid +import jakarta.validation.constraints.Min +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size import team.aliens.dms.common.validator.NotNullElements import java.util.UUID -import javax.validation.Valid -import javax.validation.constraints.Min -import javax.validation.constraints.NotBlank -import javax.validation.constraints.NotNull -import javax.validation.constraints.Size data class UpdateStudyRoomWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/UpdateTimeSlotWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/UpdateTimeSlotWebRequest.kt index 4736ca726..27034d748 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/UpdateTimeSlotWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/studyroom/dto/UpdateTimeSlotWebRequest.kt @@ -1,7 +1,7 @@ package team.aliens.dms.domain.studyroom.dto +import jakarta.validation.constraints.NotNull import java.time.LocalTime -import javax.validation.constraints.NotNull data class UpdateTimeSlotWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/tag/TagWebAdapter.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/tag/TagWebAdapter.kt index 73191d03a..9450b2c92 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/tag/TagWebAdapter.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/tag/TagWebAdapter.kt @@ -1,5 +1,7 @@ package team.aliens.dms.domain.tag +import jakarta.validation.Valid +import jakarta.validation.constraints.NotNull import org.springframework.http.HttpStatus import org.springframework.validation.annotation.Validated import org.springframework.web.bind.annotation.DeleteMapping @@ -20,8 +22,6 @@ import team.aliens.dms.domain.tag.usecase.QueryTagsUseCase import team.aliens.dms.domain.tag.usecase.RemoveTagUseCase import team.aliens.dms.domain.tag.usecase.UpdateTagUseCase import java.util.UUID -import javax.validation.Valid -import javax.validation.constraints.NotNull @Validated @RequestMapping("/tags") diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/tag/dto/CreateTagWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/tag/dto/CreateTagWebRequest.kt index e6d963e13..3bf438d40 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/tag/dto/CreateTagWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/tag/dto/CreateTagWebRequest.kt @@ -1,7 +1,7 @@ package team.aliens.dms.domain.tag.dto -import javax.validation.constraints.NotBlank -import javax.validation.constraints.Size +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.Size data class CreateTagWebRequest( @field:NotBlank diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/tag/dto/GrantTagWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/tag/dto/GrantTagWebRequest.kt index 27f27eda4..4dfe14a20 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/tag/dto/GrantTagWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/tag/dto/GrantTagWebRequest.kt @@ -1,8 +1,8 @@ package team.aliens.dms.domain.tag.dto +import jakarta.validation.constraints.NotNull import team.aliens.dms.common.validator.NotNullElements import java.util.UUID -import javax.validation.constraints.NotNull data class GrantTagWebRequest( diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/tag/dto/UpdateTagWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/tag/dto/UpdateTagWebRequest.kt index d87d2b3de..9d1007f00 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/tag/dto/UpdateTagWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/tag/dto/UpdateTagWebRequest.kt @@ -1,7 +1,7 @@ package team.aliens.dms.domain.tag.dto -import javax.validation.constraints.NotBlank -import javax.validation.constraints.Size +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.Size data class UpdateTagWebRequest( @field:NotBlank diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/user/UserWebAdapter.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/user/UserWebAdapter.kt index 468503021..d7add43a5 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/user/UserWebAdapter.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/user/UserWebAdapter.kt @@ -1,5 +1,7 @@ package team.aliens.dms.domain.user +import jakarta.validation.Valid +import jakarta.validation.constraints.NotBlank import org.springframework.http.HttpStatus import org.springframework.validation.annotation.Validated import org.springframework.web.bind.annotation.GetMapping @@ -13,8 +15,6 @@ import team.aliens.dms.domain.user.dto.UpdateUserPasswordRequest import team.aliens.dms.domain.user.dto.request.UpdateUserPasswordWebRequest import team.aliens.dms.domain.user.usecase.UpdateUserPasswordUseCase import team.aliens.dms.domain.user.usecase.UserPasswordCompareUseCase -import javax.validation.Valid -import javax.validation.constraints.NotBlank @Validated @RequestMapping("/users") diff --git a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/user/dto/request/UpdateUserPasswordWebRequest.kt b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/user/dto/request/UpdateUserPasswordWebRequest.kt index 27e14ef7f..b37f58a96 100644 --- a/dms-presentation/src/main/kotlin/team/aliens/dms/domain/user/dto/request/UpdateUserPasswordWebRequest.kt +++ b/dms-presentation/src/main/kotlin/team/aliens/dms/domain/user/dto/request/UpdateUserPasswordWebRequest.kt @@ -1,9 +1,9 @@ package team.aliens.dms.domain.user.dto.request +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.Pattern +import jakarta.validation.constraints.Size import team.aliens.dms.domain.manager.dto.request.Password -import javax.validation.constraints.NotBlank -import javax.validation.constraints.Pattern -import javax.validation.constraints.Size data class UpdateUserPasswordWebRequest( From 27ac7ecf3560ec373a26d2afdc0cc75d4e033080 Mon Sep 17 00:00:00 2001 From: alsdl0629 Date: Thu, 1 Feb 2024 19:11:05 +0900 Subject: [PATCH 3/5] Chore: (#539) detekt --- .../kotlin/team/aliens/dms/domain/notification/model/Topic.kt | 2 +- .../dms/domain/notification/service/NotificationServiceImpl.kt | 3 +-- .../kotlin/team/aliens/dms/domain/point/model/PointType.kt | 2 +- .../aliens/dms/domain/studyroom/usecase/ApplySeatUseCase.kt | 2 +- dms-infrastructure/config/detekt/detekt.yml | 2 +- 5 files changed, 5 insertions(+), 6 deletions(-) diff --git a/dms-core/src/main/kotlin/team/aliens/dms/domain/notification/model/Topic.kt b/dms-core/src/main/kotlin/team/aliens/dms/domain/notification/model/Topic.kt index 0693372a2..7feee0eae 100644 --- a/dms-core/src/main/kotlin/team/aliens/dms/domain/notification/model/Topic.kt +++ b/dms-core/src/main/kotlin/team/aliens/dms/domain/notification/model/Topic.kt @@ -27,5 +27,5 @@ enum class Topic( topicGroup = TopicGroup.STUDY_ROOM, title = "신청 시간 알림", content = "자습실 신청 시간을 알리는 알림입니다." - ); + ) } diff --git a/dms-core/src/main/kotlin/team/aliens/dms/domain/notification/service/NotificationServiceImpl.kt b/dms-core/src/main/kotlin/team/aliens/dms/domain/notification/service/NotificationServiceImpl.kt index d4f0384e8..117bc177d 100644 --- a/dms-core/src/main/kotlin/team/aliens/dms/domain/notification/service/NotificationServiceImpl.kt +++ b/dms-core/src/main/kotlin/team/aliens/dms/domain/notification/service/NotificationServiceImpl.kt @@ -15,8 +15,7 @@ class NotificationServiceImpl( private val notificationPort: NotificationPort, private val queryUserPort: QueryUserPort, private val commandTopicSubscriptionPort: CommandTopicSubscriptionPort, - private val notificationOfUserPort: - CommandNotificationOfUserPort, + private val notificationOfUserPort: CommandNotificationOfUserPort, getNotificationService: GetNotificationService, commandNotificationService: CommandNotificationService ) : NotificationService, diff --git a/dms-core/src/main/kotlin/team/aliens/dms/domain/point/model/PointType.kt b/dms-core/src/main/kotlin/team/aliens/dms/domain/point/model/PointType.kt index e3326966a..7de4678c9 100644 --- a/dms-core/src/main/kotlin/team/aliens/dms/domain/point/model/PointType.kt +++ b/dms-core/src/main/kotlin/team/aliens/dms/domain/point/model/PointType.kt @@ -4,5 +4,5 @@ enum class PointType( val korean: String ) { BONUS("상점"), - MINUS("벌점"); + MINUS("벌점") } diff --git a/dms-core/src/main/kotlin/team/aliens/dms/domain/studyroom/usecase/ApplySeatUseCase.kt b/dms-core/src/main/kotlin/team/aliens/dms/domain/studyroom/usecase/ApplySeatUseCase.kt index 3ef8147f1..7ddbf9ecc 100644 --- a/dms-core/src/main/kotlin/team/aliens/dms/domain/studyroom/usecase/ApplySeatUseCase.kt +++ b/dms-core/src/main/kotlin/team/aliens/dms/domain/studyroom/usecase/ApplySeatUseCase.kt @@ -19,7 +19,7 @@ class ApplySeatUseCase( val seat = studyRoomService.getSeatById(seatId) .apply { checkAvailable() } - val studyRoom = studyRoomService.getStudyRoom(seat.studyRoomId) + studyRoomService.getStudyRoom(seat.studyRoomId) .apply { checkIsAvailableGradeAndSex(student.grade, student.sex) studyRoomService.checkStudyRoomApplicationTimeAvailable(schoolId) diff --git a/dms-infrastructure/config/detekt/detekt.yml b/dms-infrastructure/config/detekt/detekt.yml index 23567e31a..db8926833 100644 --- a/dms-infrastructure/config/detekt/detekt.yml +++ b/dms-infrastructure/config/detekt/detekt.yml @@ -348,7 +348,7 @@ formatting: active: true autoCorrect: true NoSemicolons: - active: true + active: false autoCorrect: true NoTrailingSpaces: active: true From f0564588803c025b253d322d23d4ff4951679752 Mon Sep 17 00:00:00 2001 From: alsdl0629 Date: Fri, 2 Feb 2024 15:44:40 +0900 Subject: [PATCH 4/5] =?UTF-8?q?Chore:=20(#539)=20=EC=9E=90=EC=9E=98?= =?UTF-8?q?=ED=95=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildSrc/src/main/kotlin/Dependencies.kt | 6 ++--- .../src/main/kotlin/DependencyVersions.kt | 2 +- .../security/token/GenerateJwtAdapter.kt | 26 +++++++++---------- .../dms/global/security/token/JwtParser.kt | 14 +++++----- .../global/security/token/JwtProperties.kt | 1 - .../src/main/resources/application.yml | 6 ++--- 6 files changed, 26 insertions(+), 29 deletions(-) diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/buildSrc/src/main/kotlin/Dependencies.kt index 3346df9ac..def1e6fac 100644 --- a/buildSrc/src/main/kotlin/Dependencies.kt +++ b/buildSrc/src/main/kotlin/Dependencies.kt @@ -40,9 +40,9 @@ object Dependencies { const val SPRING_SECURITY = "org.springframework.boot:spring-boot-starter-security" // jwt - const val JWT = "io.jsonwebtoken:jjwt:${DependencyVersions.JWT_VERSION}" - const val JWT_IMPL = "io.jsonwebtoken:jjwt:${DependencyVersions.JWT_VERSION}" - const val JWT_JACKSON = "io.jsonwebtoken:jjwt:${DependencyVersions.JWT_VERSION}" + const val JWT = "io.jsonwebtoken:jjwt-api:${DependencyVersions.JWT_VERSION}" + const val JWT_IMPL = "io.jsonwebtoken:jjwt-impl:${DependencyVersions.JWT_VERSION}" + const val JWT_JACKSON = "io.jsonwebtoken:jjwt-jackson:${DependencyVersions.JWT_VERSION}" // aws const val SPRING_AWS = "io.awspring.cloud:spring-cloud-starter-aws:${DependencyVersions.AWS_VERSION}" diff --git a/buildSrc/src/main/kotlin/DependencyVersions.kt b/buildSrc/src/main/kotlin/DependencyVersions.kt index 3b1f3b6b8..335901a48 100644 --- a/buildSrc/src/main/kotlin/DependencyVersions.kt +++ b/buildSrc/src/main/kotlin/DependencyVersions.kt @@ -1,6 +1,6 @@ object DependencyVersions { const val JACKSON_VERSION = "2.16.1" - const val JWT_VERSION = "0.12.5" + const val JWT_VERSION = "0.11.5" const val AWS_VERSION = "2.4.4" const val SES_VERSION = "1.11.852" const val REDIS_VERSION = "2.7.2" diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/GenerateJwtAdapter.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/GenerateJwtAdapter.kt index a3f0f5275..d5676eac4 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/GenerateJwtAdapter.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/GenerateJwtAdapter.kt @@ -1,6 +1,8 @@ package team.aliens.dms.global.security.token +import io.jsonwebtoken.Header import io.jsonwebtoken.Jwts +import io.jsonwebtoken.SignatureAlgorithm import org.springframework.stereotype.Component import team.aliens.dms.domain.auth.dto.TokenResponse import team.aliens.dms.domain.auth.model.Authority @@ -15,7 +17,7 @@ import java.util.UUID @Component class GenerateJwtAdapter( private val securityProperties: SecurityProperties, - private val commandRefreshTokenPort: CommandRefreshTokenPort + private val commandRefreshTokenPort: CommandRefreshTokenPort, ) : JwtPort { override fun receiveToken(userId: UUID, authority: Authority) = TokenResponse( @@ -27,24 +29,20 @@ class GenerateJwtAdapter( private fun generateAccessToken(userId: UUID, authority: Authority) = Jwts.builder() - .signWith(securityProperties.secretKey) - .header() - .add(JwtProperties.JWT_TYPE, JwtProperties.ACCESS) - .and() - .id(userId.toString()) + .signWith(securityProperties.secretKey, SignatureAlgorithm.HS512) + .setHeaderParam(Header.JWT_TYPE, JwtProperties.ACCESS) + .setId(userId.toString()) .claim(JwtProperties.AUTHORITY, authority.name) - .issuedAt(Date()) - .expiration(Date(System.currentTimeMillis() + securityProperties.accessExp * 1000)) + .setIssuedAt(Date()) + .setExpiration(Date(System.currentTimeMillis() + securityProperties.accessExp * 1000)) .compact() private fun generateRefreshToken(userId: UUID, authority: Authority): String { val token = Jwts.builder() - .signWith(securityProperties.secretKey) - .header() - .add(JwtProperties.JWT_TYPE, JwtProperties.REFRESH) - .and() - .issuedAt(Date()) - .expiration(Date(System.currentTimeMillis() + securityProperties.refreshExp * 1000)) + .signWith(securityProperties.secretKey, SignatureAlgorithm.HS512) + .setHeaderParam(Header.JWT_TYPE, JwtProperties.REFRESH) + .setIssuedAt(Date()) + .setExpiration(Date(System.currentTimeMillis() + securityProperties.refreshExp * 1000)) .compact() val refreshToken = RefreshToken( diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtParser.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtParser.kt index 4a36317d1..3b4414375 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtParser.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtParser.kt @@ -2,6 +2,7 @@ package team.aliens.dms.global.security.token import io.jsonwebtoken.Claims import io.jsonwebtoken.ExpiredJwtException +import io.jsonwebtoken.Header import io.jsonwebtoken.InvalidClaimException import io.jsonwebtoken.Jws import io.jsonwebtoken.JwtException @@ -24,17 +25,17 @@ import team.aliens.dms.global.security.principle.StudentDetailsService class JwtParser( private val securityProperties: SecurityProperties, private val studentDetailsService: StudentDetailsService, - private val managerDetailsService: ManagerDetailsService, + private val managerDetailsService: ManagerDetailsService ) { fun getAuthentication(token: String): Authentication { val claims = getClaims(token) - if (claims.header[JwtProperties.JWT_TYPE] != JwtProperties.ACCESS) { + if (claims.header[Header.JWT_TYPE] != JwtProperties.ACCESS) { throw InvalidTokenException } - val userDetails = getDetails(claims.payload) + val userDetails = getDetails(claims.body) return UsernamePasswordAuthenticationToken(userDetails, "", userDetails.authorities) } @@ -42,9 +43,8 @@ class JwtParser( private fun getClaims(token: String): Jws { return try { Jwts.parser() - .verifyWith(securityProperties.secretKey) - .build() - .parseSignedClaims(token) + .setSigningKey(securityProperties.secretKey) + .parseClaimsJws(token) } catch (e: Exception) { when (e) { is InvalidClaimException -> throw InvalidTokenException @@ -64,4 +64,4 @@ class JwtParser( else -> throw InvalidRoleException } } -} +} \ No newline at end of file diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtProperties.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtProperties.kt index 417f82ea9..bac1c0157 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtProperties.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtProperties.kt @@ -6,5 +6,4 @@ object JwtProperties { const val ACCESS = "access" const val REFRESH = "refresh" const val AUTHORITY = "authority" - const val JWT_TYPE = "JWT" } diff --git a/dms-infrastructure/src/main/resources/application.yml b/dms-infrastructure/src/main/resources/application.yml index c1ac24c64..288fbaa05 100644 --- a/dms-infrastructure/src/main/resources/application.yml +++ b/dms-infrastructure/src/main/resources/application.yml @@ -53,7 +53,7 @@ secret: refresh-exp: ${REFRESH_EXP:7200} open-feign: - neis-key: ${NEIS_KEY:c285510776f048309a27c343cd0e4290} + neis-key: ${NEIS_KEY:asdf} cloud: aws: @@ -68,10 +68,10 @@ cloud: s3: bucket: ${BUCKET_NAME:dms} ses: - source: ${SES_SENDER:asdf}S + source: ${SES_SENDER:asdf} sentry: - dsn: ${SENTRY_DSN:https://eb485e17c4db4b4d9e3ab8aee206e040@o4505293230112768.ingest.sentry.io/4505293252984832} + dsn: ${SENTRY_DSN:asdf} traces-sample-rate: 1.0 logging: From 319d75b0d9045f545a8acf8b878626aa7f5faa00 Mon Sep 17 00:00:00 2001 From: alsdl0629 Date: Fri, 2 Feb 2024 16:13:56 +0900 Subject: [PATCH 5/5] =?UTF-8?q?Chore:=20(#539)=20deprecated=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/team/aliens/dms/global/security/token/JwtParser.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtParser.kt b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtParser.kt index 3b4414375..ad3a2ebab 100644 --- a/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtParser.kt +++ b/dms-infrastructure/src/main/kotlin/team/aliens/dms/global/security/token/JwtParser.kt @@ -42,8 +42,9 @@ class JwtParser( private fun getClaims(token: String): Jws { return try { - Jwts.parser() + Jwts.parserBuilder() .setSigningKey(securityProperties.secretKey) + .build() .parseClaimsJws(token) } catch (e: Exception) { when (e) {