Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package im.grit.infrastructure.common.entity

import jakarta.persistence.Column
import jakarta.persistence.EntityListeners
import jakarta.persistence.GeneratedValue
import jakarta.persistence.GenerationType
import jakarta.persistence.Id
import jakarta.persistence.MappedSuperclass
import org.springframework.data.annotation.CreatedDate
import org.springframework.data.annotation.LastModifiedDate
import org.springframework.data.jpa.domain.support.AuditingEntityListener
import java.time.LocalDateTime

@MappedSuperclass
@EntityListeners(AuditingEntityListener::class)
abstract class BaseDateTimeEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long = 0L

@CreatedDate
@Column(nullable = false, updatable = false, comment = "생성 λ‚ μ§œ")
var createdAt: LocalDateTime = LocalDateTime.now()
protected set

@LastModifiedDate
@Column(nullable = false, comment = "μ΅œμ’… μˆ˜μ • λ‚ μ§œ")
var updatedAt: LocalDateTime = LocalDateTime.now()
protected set
}
20 changes: 20 additions & 0 deletions src/main/kotlin/im/grit/infrastructure/common/entity/BaseEntity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package im.grit.infrastructure.common.entity

import jakarta.persistence.Column
import jakarta.persistence.MappedSuperclass
import org.springframework.data.annotation.CreatedBy
import org.springframework.data.annotation.LastModifiedBy

@MappedSuperclass
abstract class BaseEntity : BaseDateTimeEntity() {

@CreatedBy
@Column(nullable = false, updatable = false, comment = "μƒμ„±ν•œ μ‚¬μš©μž")
var createdBy: String = ""
protected set

@LastModifiedBy
@Column(nullable = false, comment = "μ΅œμ’… μˆ˜μ •ν•œ μ‚¬μš©μž")
var updatedBy: String = ""
protected set
}
16 changes: 16 additions & 0 deletions src/main/kotlin/im/grit/infrastructure/config/audit/AuditConfig.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package im.grit.infrastructure.config.audit

import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.data.domain.AuditorAware
import org.springframework.data.jpa.repository.config.EnableJpaAuditing

@Configuration
@EnableJpaAuditing
class AuditConfig {

@Bean
fun auditorAwareProvider(): AuditorAware<String> {
return AuditorAwareImpl()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package im.grit.infrastructure.config.audit

import org.springframework.data.domain.AuditorAware
import org.springframework.security.authentication.AnonymousAuthenticationToken
import org.springframework.security.core.context.SecurityContextHolder
import java.util.*

class AuditorAwareImpl : AuditorAware<String> {

override fun getCurrentAuditor(): Optional<String> {
val auditor = SecurityContextHolder.getContext().authentication
?.takeIf { it.isAuthenticated && it !is AnonymousAuthenticationToken }
?.name
?: ANONYMOUS

return Optional.of(auditor)
}

companion object {
private const val ANONYMOUS = "anonymous"
}
}