Skip to content

Commit

Permalink
Merge pull request #25 from MONEYMONG/epic/moneymong-122-로그인-회원가입
Browse files Browse the repository at this point in the history
Epic/moneymong 122 로그인 회원가입
  • Loading branch information
eunseo0105 authored Aug 12, 2024
2 parents f6b0536 + d1d1457 commit 77c202e
Show file tree
Hide file tree
Showing 36 changed files with 319 additions and 346 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.moneymong.moneymong.model.sign

enum class LoginType {
KAKAO
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@ package com.moneymong.moneymong.model.sign

data class TokenRequest (
val provider : String,
val accessToken : String
val accessToken : String,
val name: String,
val code: String
)
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ data class TokenResponse(
val accessToken : String,
val refreshToken : String,
val loginSuccess : Boolean,
val schoolInfoExist : Boolean
val schoolInfoExist : Boolean,
val schoolInfoProvided: Boolean
)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.moneymong.moneymong.model.sign

data class UnivRequest(
val universityName: String,
val grade: Int
val universityName: String?,
val grade: Int?
)
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ package com.moneymong.moneymong.model.sign

data class UserDataStoreInfoResponse(
val accessToken : String,
val schoolInfoExist : Boolean,
val schoolInfoProvided : Boolean,
)
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
package com.moneymong.moneymong.network.api

import com.moneymong.moneymong.model.sign.RefreshTokenRequest
import com.moneymong.moneymong.model.sign.TokenRequest
import com.moneymong.moneymong.model.sign.RefreshTokenResponse
import com.moneymong.moneymong.model.sign.TokenRequest
import com.moneymong.moneymong.model.sign.TokenResponse
import retrofit2.http.Body
import retrofit2.http.DELETE
import retrofit2.http.POST

interface AccessTokenApi {
@POST("api/v1/users")
suspend fun accessTokenApi(
@Body body : TokenRequest
suspend fun postAccessToken(
@Body body: TokenRequest
): Result<TokenResponse>

@POST("api/v1/tokens")
suspend fun refreshTokenApi(
@Body body : RefreshTokenRequest
) : Result<RefreshTokenResponse>
@Body body: RefreshTokenRequest
): Result<RefreshTokenResponse>

@DELETE("api/v1/tokens")
suspend fun deleteRefreshToken(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.moneymong.moneymong.network.util

import com.moneymong.moneymong.domain.repository.LoginRepository
import com.moneymong.moneymong.domain.repository.TokenRepository
import com.moneymong.moneymong.network.BuildConfig
import kotlinx.coroutines.runBlocking
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@ import com.moneymong.moneymong.model.sign.UserDataStoreInfoResponse
interface LoginLocalDataSource {
suspend fun getRefreshToken(): Result<String>
suspend fun getAccessToken(): Result<String>
suspend fun getDataStoreInfo() : Result<UserDataStoreInfoResponse>
suspend fun getDataStoreInfo(): Result<UserDataStoreInfoResponse>
suspend fun deleteToken()
suspend fun setDataStore(aToken: String, rToken: String, success: Boolean, infoExist: Boolean)
suspend fun updateTokens(aToken: String, rToken: String)
suspend fun updateAccessToken(aToken: String)
suspend fun getSchoolInfo(): Result<Boolean>
suspend fun setSchoolInfoExist(infoExist: Boolean)
suspend fun setSchoolInfoProvided(infoExist: Boolean)
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class LoginLocalDataSourceImpl @Inject constructor(
private val accessToken = stringPreferencesKey("ACCESS_TOKEN")
private val refreshToken = stringPreferencesKey("REFRESH_TOKEN")
private val loginSuccess = booleanPreferencesKey("LOGIN_SUCCESS")
private val schoolInfoExist = booleanPreferencesKey("SCHOOL_INFO_EXIST")
private val schoolInfoProvided = booleanPreferencesKey("SCHOOL_INFO_PROVIDED")

override suspend fun getRefreshToken(): Result<String> {
val preferences = context.dataStore.data.first()
Expand All @@ -35,7 +35,7 @@ class LoginLocalDataSourceImpl @Inject constructor(

override suspend fun getDataStoreInfo(): Result<UserDataStoreInfoResponse> {
val preferences = context.dataStore.data.first()
return Result.success(UserDataStoreInfoResponse(preferences[accessToken] ?: "",preferences[schoolInfoExist] ?: false))
return Result.success(UserDataStoreInfoResponse(preferences[accessToken] ?: "",preferences[schoolInfoProvided] ?: false))
}

override suspend fun updateTokens(aToken: String, rToken: String) {
Expand All @@ -53,32 +53,36 @@ class LoginLocalDataSourceImpl @Inject constructor(

override suspend fun getSchoolInfo(): Result<Boolean> {
val preferences = context.dataStore.data.first()
return preferences[schoolInfoExist]?.let { Result.success(it) }
?: Result.failure(Exception("schoolInfoExist is null"))
return preferences[schoolInfoProvided]?.let { Result.success(it) }
?: Result.failure(Exception("schoolInfoProvided is null"))
}

override suspend fun deleteToken() {
context.dataStore.edit { preferences ->
preferences.remove(accessToken)
preferences.remove(refreshToken)
preferences.remove(loginSuccess)
preferences.remove(schoolInfoExist)
preferences.remove(schoolInfoProvided)
}
}

suspend fun setDataStore(aToken: String, rToken: String, success: Boolean, infoExist: Boolean) {
override suspend fun setDataStore(
aToken: String,
rToken: String,
success: Boolean,
infoExist: Boolean
) {
context.dataStore.edit { preferences ->
preferences[accessToken] = aToken
preferences[refreshToken] = rToken
preferences[loginSuccess] = success
preferences[schoolInfoExist] = infoExist
Log.d("schoolInfoExist", preferences[schoolInfoExist]!!.toString())
preferences[schoolInfoProvided] = infoExist
}
}

override suspend fun setSchoolInfoExist(infoExist: Boolean) {
override suspend fun setSchoolInfoProvided(infoExist: Boolean) {
context.dataStore.edit { preferences ->
preferences[schoolInfoExist] = infoExist
preferences[schoolInfoProvided] = infoExist
}

}
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
package com.moneymong.moneymong.data.datasource.login

import com.moneymong.moneymong.model.sign.LoginType
import com.moneymong.moneymong.model.sign.RefreshTokenRequest
import com.moneymong.moneymong.model.sign.RefreshTokenResponse
import com.moneymong.moneymong.model.sign.TokenResponse

interface TokenRemoteDataSource {

suspend fun postAccessToken(
type: LoginType,
accessToken: String
): Result<TokenResponse>

suspend fun getUpdateToken(refreshToken: String): Result<RefreshTokenResponse>
suspend fun deleteRefreshToken(body: RefreshTokenRequest)
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package com.moneymong.moneymong.data.datasource.login

import com.moneymong.moneymong.network.api.AccessTokenApi
import com.moneymong.moneymong.model.sign.LoginType
import com.moneymong.moneymong.model.sign.RefreshTokenRequest
import com.moneymong.moneymong.model.sign.RefreshTokenResponse
import com.moneymong.moneymong.model.sign.TokenRequest
import com.moneymong.moneymong.model.sign.TokenResponse
import com.moneymong.moneymong.network.api.AccessTokenApi
import javax.inject.Inject
import javax.inject.Provider

Expand All @@ -11,6 +14,13 @@ class TokenRemoteDataSourceImpl @Inject constructor(
) : TokenRemoteDataSource {
private val accessTokenApi by lazy { accessTokenApiProvider.get() }

override suspend fun postAccessToken(
type: LoginType,
accessToken: String
): Result<TokenResponse> {
return accessTokenApi.postAccessToken(TokenRequest(type.name, accessToken, "", ""))
}

override suspend fun getUpdateToken(refreshToken: String): Result<RefreshTokenResponse> {
return accessTokenApi.refreshTokenApi(RefreshTokenRequest(refreshToken))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,6 @@ package com.moneymong.moneymong.data.di

import com.moneymong.moneymong.data.datasource.agency.AgencyLocalDataSource
import com.moneymong.moneymong.data.datasource.agency.AgencyLocalDataSourceImpl
import com.moneymong.moneymong.data.datasource.login.LoginLocalDataSource
import com.moneymong.moneymong.data.datasource.login.LoginLocalDataSourceImpl
import com.moneymong.moneymong.data.datasource.login.LoginRemoteDataSource
import com.moneymong.moneymong.data.datasource.login.LoginRemoteDataSourceImpl
import com.moneymong.moneymong.data.datasource.login.TokenRemoteDataSource
import com.moneymong.moneymong.data.datasource.login.TokenRemoteDataSourceImpl
import com.moneymong.moneymong.data.datasource.signup.UnivRemoteDataSource
import com.moneymong.moneymong.data.datasource.signup.UnivRemoteDataSourceImpl
import com.moneymong.moneymong.data.datasource.agency.AgencyRemoteDataSource
import com.moneymong.moneymong.data.datasource.agency.AgencyRemoteDataSourceImpl
import com.moneymong.moneymong.data.datasource.ledger.LedgerLocalDataSource
Expand All @@ -18,10 +10,16 @@ import com.moneymong.moneymong.data.datasource.ledger.LedgerRemoteDataSource
import com.moneymong.moneymong.data.datasource.ledger.LedgerRemoteDataSourceImpl
import com.moneymong.moneymong.data.datasource.ledgerdetail.LedgerDetailRemoteDataSource
import com.moneymong.moneymong.data.datasource.ledgerdetail.LedgerDetailRemoteDataSourceImpl
import com.moneymong.moneymong.data.datasource.login.LoginLocalDataSource
import com.moneymong.moneymong.data.datasource.login.LoginLocalDataSourceImpl
import com.moneymong.moneymong.data.datasource.login.TokenRemoteDataSource
import com.moneymong.moneymong.data.datasource.login.TokenRemoteDataSourceImpl
import com.moneymong.moneymong.data.datasource.member.MemberRemoteDataSource
import com.moneymong.moneymong.data.datasource.member.MemberRemoteDataSourceImpl
import com.moneymong.moneymong.data.datasource.ocr.OCRRemoteDataSource
import com.moneymong.moneymong.data.datasource.ocr.OCRRemoteDataSourceImpl
import com.moneymong.moneymong.data.datasource.signup.UnivRemoteDataSource
import com.moneymong.moneymong.data.datasource.signup.UnivRemoteDataSourceImpl
import com.moneymong.moneymong.data.datasource.user.UserLocalDataSource
import com.moneymong.moneymong.data.datasource.user.UserLocalDataSourceImpl
import com.moneymong.moneymong.data.datasource.user.UserRemoteDataSource
Expand All @@ -35,11 +33,6 @@ import dagger.hilt.components.SingletonComponent
@InstallIn(SingletonComponent::class)
interface DataSourceModule {

@Binds
fun bindLoginDataSource(
loginRemoteDataSourceImpl: LoginRemoteDataSourceImpl
): LoginRemoteDataSource

@Binds
fun bindUnivDataSource(
univRemoteDataSourceImpl: UnivRemoteDataSourceImpl
Expand Down
Loading

0 comments on commit 77c202e

Please sign in to comment.