package fr.dcproject.component.auth import fr.dcproject.component.auth.UserI.Roles import fr.postgresjson.entity.EntityCreatedAt import fr.postgresjson.entity.EntityCreatedAtImp import fr.postgresjson.entity.EntityUpdatedAt import fr.postgresjson.entity.EntityUpdatedAtImp import fr.postgresjson.entity.UuidEntity import fr.postgresjson.entity.UuidEntityI import io.ktor.auth.Principal import org.joda.time.DateTime import java.util.UUID class User( id: UUID = UUID.randomUUID(), username: String, blockedAt: DateTime? = null, override var plainPassword: String? = null, override var roles: List = emptyList() ) : UserFull, UserBasic(id, username, blockedAt), EntityCreatedAt by EntityCreatedAtImp(), EntityUpdatedAt by EntityUpdatedAtImp() @Deprecated("") open class UserBasic( id: UUID = UUID.randomUUID(), override var username: String, override var blockedAt: DateTime? = null ) : UserBasicI, UserRef(id) open class UserRef( id: UUID = UUID.randomUUID() ) : UserI, UuidEntity(id) interface UserI : UuidEntityI, Principal { enum class Roles { ROLE_USER, ROLE_ADMIN } } @Deprecated("") interface UserBasicI : UserI { var username: String var blockedAt: DateTime? } @Deprecated("") interface UserFull : UserBasicI, EntityCreatedAt, EntityUpdatedAt { var plainPassword: String? var roles: List } interface UserForAuthI : UserI { var roles: List var blockedAt: DateTime? }