23 lines
895 B
Kotlin
23 lines
895 B
Kotlin
package be.simplenotes.domain.usecases.users.register
|
|
|
|
import arrow.core.Either
|
|
import arrow.core.filterOrElse
|
|
import arrow.core.leftIfNull
|
|
import be.simplenotes.types.PersistedUser
|
|
import be.simplenotes.domain.security.PasswordHash
|
|
import be.simplenotes.domain.usecases.repositories.UserRepository
|
|
import be.simplenotes.domain.validation.UserValidations
|
|
|
|
internal class RegisterUseCaseImpl(
|
|
private val userRepository: UserRepository,
|
|
private val passwordHash: PasswordHash
|
|
) : RegisterUseCase {
|
|
override fun register(form: RegisterForm): Either<RegisterError, PersistedUser> {
|
|
return UserValidations.validateRegister(form)
|
|
.filterOrElse({ !userRepository.exists(it.username) }, { UserExists })
|
|
.map { it.copy(password = passwordHash.crypt(it.password)) }
|
|
.map { userRepository.create(it) }
|
|
.leftIfNull { UserExists }
|
|
}
|
|
}
|