Добавил работу с сетью и сценарии авторизации
This commit is contained in:
@@ -2,10 +2,11 @@ package com.novayaplaneta.domain.model
|
||||
|
||||
data class User(
|
||||
val id: String,
|
||||
val name: String,
|
||||
val fullName: String,
|
||||
val email: String,
|
||||
val role: UserRole,
|
||||
val token: String? = null
|
||||
val createdAt: String? = null,
|
||||
val updatedAt: String? = null
|
||||
)
|
||||
|
||||
enum class UserRole {
|
||||
|
||||
@@ -4,7 +4,10 @@ import com.novayaplaneta.domain.model.User
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
interface AuthRepository {
|
||||
suspend fun register(email: String, fullName: String, password: String, role: String = "CHILD"): Result<User>
|
||||
suspend fun login(email: String, password: String): Result<User>
|
||||
suspend fun refresh(): Result<Unit>
|
||||
suspend fun getMe(): Result<User>
|
||||
suspend fun logout()
|
||||
fun getCurrentUser(): Flow<User?>
|
||||
suspend fun saveUser(user: User)
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.novayaplaneta.domain.usecase
|
||||
|
||||
import com.novayaplaneta.domain.model.User
|
||||
import com.novayaplaneta.domain.repository.AuthRepository
|
||||
import javax.inject.Inject
|
||||
|
||||
class GetMeUseCase @Inject constructor(
|
||||
private val authRepository: AuthRepository
|
||||
) {
|
||||
suspend operator fun invoke(): Result<User> {
|
||||
return authRepository.getMe()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.novayaplaneta.domain.usecase
|
||||
|
||||
import com.novayaplaneta.domain.model.User
|
||||
import com.novayaplaneta.domain.repository.AuthRepository
|
||||
import javax.inject.Inject
|
||||
|
||||
class LoginUseCase @Inject constructor(
|
||||
private val authRepository: AuthRepository
|
||||
) {
|
||||
suspend operator fun invoke(email: String, password: String): Result<User> {
|
||||
return authRepository.login(email, password)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.novayaplaneta.domain.usecase
|
||||
|
||||
import com.novayaplaneta.domain.repository.AuthRepository
|
||||
import javax.inject.Inject
|
||||
|
||||
class LogoutUseCase @Inject constructor(
|
||||
private val authRepository: AuthRepository
|
||||
) {
|
||||
suspend operator fun invoke() {
|
||||
authRepository.logout()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.novayaplaneta.domain.usecase
|
||||
|
||||
import com.novayaplaneta.domain.model.User
|
||||
import com.novayaplaneta.domain.repository.AuthRepository
|
||||
import javax.inject.Inject
|
||||
|
||||
class RegisterUseCase @Inject constructor(
|
||||
private val authRepository: AuthRepository
|
||||
) {
|
||||
suspend operator fun invoke(
|
||||
email: String,
|
||||
fullName: String,
|
||||
password: String,
|
||||
role: String = "CHILD"
|
||||
): Result<User> {
|
||||
return authRepository.register(email, fullName, password, role)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user