48 lines
1.4 KiB
Kotlin
48 lines
1.4 KiB
Kotlin
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<GrantedAuthority>? = null
|
|
|
|
constructor(user: User) : this() {
|
|
this.user = user
|
|
}
|
|
|
|
@JsonIgnore
|
|
override fun getAuthorities(): List<GrantedAuthority> {
|
|
authorities?.let { return it }
|
|
authorities = emptyList()
|
|
|
|
return authorities as List<GrantedAuthority>
|
|
}
|
|
|
|
@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
|
|
} |