package top.fatweb.api.entity.permission import com.fasterxml.jackson.annotation.JsonIgnore import com.fasterxml.jackson.annotation.JsonTypeInfo import org.springframework.security.core.GrantedAuthority import org.springframework.security.core.userdetails.UserDetails import java.time.LocalDateTime import java.time.ZoneOffset @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS) class LoginUser() : UserDetails { lateinit var user: User @JsonIgnore private var authorities: List? = null constructor(user: User) : this() { this.user = user } @JsonIgnore override fun getAuthorities(): List { authorities?.let { return it } authorities = emptyList() return authorities as List } @JsonIgnore override fun getPassword() = user.password @JsonIgnore override fun getUsername() = user.username @JsonIgnore override fun isAccountNonExpired() = user.expiration == null || user.expiration!!.isAfter(LocalDateTime.now(ZoneOffset.UTC)) @JsonIgnore override fun isAccountNonLocked() = user.locking == 0 @JsonIgnore override fun isCredentialsNonExpired() = user.credentialsExpiration == null || user.credentialsExpiration!!.isAfter(LocalDateTime.now(ZoneOffset.UTC)) @JsonIgnore override fun isEnabled() = user.enable == 1 }