feat: JWT 기반 인증 시스템 및 이메일 가입 구현
[인프라] - Docker Compose 구성 (DB, Redis, MinIO) - Spring Boot 3.5.9 + Kotlin + Gradle 설정 [인증/보안] - Spring Security 및 JWT 필터 설정 - RTR(Refresh Token Rotation) 방식의 토큰 재발급 로직 구현 - Redis를 활용한 Refresh Token 및 이메일 인증 코드 관리 [기능 구현] - 회원가입 (이메일 인증 포함) - 로그인/로그아웃/토큰재발급 API 구현 - 공통 응답(ApiResponse) 및 전역 예외 처리(GlobalExceptionHandler) 적용
This commit is contained in:
37
src/main/kotlin/me/wypark/blogbackend/domain/user/Member.kt
Normal file
37
src/main/kotlin/me/wypark/blogbackend/domain/user/Member.kt
Normal file
@@ -0,0 +1,37 @@
|
||||
package me.wypark.blogbackend.domain.user
|
||||
|
||||
import jakarta.persistence.*
|
||||
import me.wypark.blogbackend.domain.common.BaseTimeEntity
|
||||
|
||||
@Entity
|
||||
@Table(name = "member")
|
||||
class Member(
|
||||
@Column(nullable = false, unique = true)
|
||||
val email: String,
|
||||
|
||||
@Column(nullable = false)
|
||||
var password: String,
|
||||
|
||||
@Column(nullable = false)
|
||||
var nickname: String,
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Column(nullable = false)
|
||||
val role: Role,
|
||||
|
||||
@Column(nullable = false)
|
||||
var isVerified: Boolean = false
|
||||
) : BaseTimeEntity() {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
val id: Long? = null
|
||||
|
||||
fun verify() {
|
||||
this.isVerified = true
|
||||
}
|
||||
}
|
||||
|
||||
enum class Role {
|
||||
ROLE_USER, ROLE_ADMIN
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package me.wypark.blogbackend.domain.user
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository
|
||||
|
||||
interface MemberRepository : JpaRepository<Member, Long> {
|
||||
// 로그인 및 중복 가입 방지를 위한 핵심 메소드들입니다.
|
||||
fun findByEmail(email: String): Member?
|
||||
fun existsByEmail(email: String): Boolean
|
||||
fun existsByNickname(nickname: String): Boolean
|
||||
}
|
||||
Reference in New Issue
Block a user