User.kt

package com.distasilucas.cryptobalancetracker.entity

import com.distasilucas.cryptobalancetracker.model.Role
import org.springframework.data.annotation.Id
import org.springframework.data.mongodb.core.mapping.Document
import org.springframework.data.mongodb.core.mapping.Field
import org.springframework.security.core.authority.SimpleGrantedAuthority
import org.springframework.security.core.userdetails.UserDetails
import java.time.LocalDateTime
import java.util.UUID

@Document("Users")
data class User(
  @Id
  private val id: String = UUID.randomUUID().toString(),
  private val username: String,
  private val password: String,
  private val role: Role,

  @Field("created_at")
  private val createdAt: LocalDateTime

) : UserDetails {
  override fun getAuthorities() = listOf(SimpleGrantedAuthority(role.name))

  override fun getPassword() = password

  override fun getUsername() = username

  override fun isAccountNonExpired() = true

  override fun isAccountNonLocked() = true

  override fun isCredentialsNonExpired() = true

  override fun isEnabled() = true

}