Skip to content

Commit b0fd7da

Browse files
authored
Merge pull request #184 from DSM-PICK/feature/(#183)-signup_logic
🔗 :: (#183) 회원가입, 비밀번호 변경 로직
2 parents 6bf60ed + a170892 commit b0fd7da

38 files changed

+722
-347
lines changed

Projects/Core/Sources/Steps/PiCKStep.swift

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,17 @@ public enum PiCKStep: Step {
66
// start
77
case appIsRequired
88
case onboardingIsRequired
9-
case loginIsRequired
9+
case signinIsRequired
1010

1111
// tab
1212
case tabIsRequired
1313
case popIsRequired
1414

15-
// MARK: Login
16-
case signUpIsRequired
17-
18-
// MARK: SignUp
15+
// MARK: Signup
1916
case verifyEmailIsRequired
20-
case passwordSettingIsRequired
17+
case passwordSettingIsRequired(email: String, verificationCode: String)
2118
case infoSettingIsRequired(email: String, password: String, verificationCode: String)
22-
case signUpComplete
19+
case signupComplete
2320

2421
// MARK: home
2522
case homeIsRequired
@@ -56,7 +53,7 @@ public enum PiCKStep: Step {
5653

5754
// MARK: ChangePassword
5855
case changePasswordIsRequired
59-
case newPasswordIsRequired
56+
case newPasswordIsRequired(verificationCode: String)
6057

6158
// MARK: test
6259
case testIsRequired

Projects/Data/Sources/API/AuthAPI.swift

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ import Domain
77
import AppNetwork
88

99
public enum AuthAPI {
10-
case login(req: SigninRequestParams)
10+
case signin(req: SigninRequestParams)
1111
case refreshToken
12-
case signUp(req: SignUpRequestParams)
12+
case signup(req: SignupRequestParams)
13+
case passwordChange(req: PasswordChangeRequestParams)
1314
}
1415

1516
extension AuthAPI: PiCKAPI {
@@ -21,18 +22,20 @@ extension AuthAPI: PiCKAPI {
2122

2223
public var urlPath: String {
2324
switch self {
24-
case .login:
25+
case .signin:
2526
return "/login"
26-
case .signUp:
27+
case .signup:
2728
return "/signup"
2829
case .refreshToken:
2930
return "/refresh"
31+
case .passwordChange:
32+
return "/password"
3033
}
3134
}
3235

3336
public var method: Moya.Method {
3437
switch self {
35-
case .login, .signUp:
38+
case .signin, .signup, .passwordChange:
3639
return .post
3740
case .refreshToken:
3841
return .put
@@ -41,9 +44,11 @@ extension AuthAPI: PiCKAPI {
4144

4245
public var task: Moya.Task {
4346
switch self {
44-
case let .login(req):
47+
case let .signin(req):
4548
return .requestJSONEncodable(req)
46-
case let .signUp(req):
49+
case let .signup(req):
50+
return .requestJSONEncodable(req)
51+
case let .passwordChange(req):
4752
return .requestJSONEncodable(req)
4853
default:
4954
return .requestPlain
@@ -61,7 +66,7 @@ extension AuthAPI: PiCKAPI {
6166

6267
public var errorMap: [Int: ErrorType]? {
6368
switch self {
64-
case .login(let req):
69+
case .signin(let req):
6570
return [
6671
401: .passwordMismatch,
6772
404: .idMismatch

Projects/Data/Sources/DI/UseCaseAssembly.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,18 @@ public final class UseCaseAssembly: Assembly {
1212
container.register(SigninUseCase.self) { resolver in
1313
SigninUseCase(repository: resolver.resolve(AuthRepository.self)!)
1414
}
15-
container.register(SignUpUseCase.self) { resolver in
16-
SignUpUseCase(repository: resolver.resolve(AuthRepository.self)!)
15+
container.register(SignupUseCase.self) { resolver in
16+
SignupUseCase(repository: resolver.resolve(AuthRepository.self)!)
1717
}
1818
container.register(LogoutUseCase.self) { resolver in
1919
LogoutUseCase(repository: resolver.resolve(AuthRepository.self)!)
2020
}
2121
container.register(RefreshTokenUseCase.self) { resolver in
2222
RefreshTokenUseCase(repository: resolver.resolve(AuthRepository.self)!)
2323
}
24+
container.register(PasswordChangeUseCase.self) { resolver in
25+
PasswordChangeUseCase(repository: resolver.resolve(AuthRepository.self)!)
26+
}
2427
// MARK: Home
2528
container.register(FetchApplyStatusUsecase.self) { resolver in
2629
FetchApplyStatusUsecase(repository: resolver.resolve(HomeRepository.self)!)

Projects/Data/Sources/DataSource/AuthDataSource.swift

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ import Domain
99
import AppNetwork
1010

1111
protocol AuthDataSource {
12-
func login(req: SigninRequestParams) -> Single<TokenDTO>
13-
func signUp(req: SignUpRequestParams) -> Completable
12+
func signin(req: SigninRequestParams) -> Single<TokenDTO>
13+
func signup(req: SignupRequestParams) -> Completable
14+
func passwordChange(req: PasswordChangeRequestParams) -> Completable
1415
func logout()
1516
func refreshToken() -> Single<TokenDTO>
1617
}
@@ -24,14 +25,20 @@ class AuthDataSourceImpl: BaseDataSource<AuthAPI>, AuthDataSource {
2425
super.init(keychain: keychain)
2526
}
2627

27-
func login(req: SigninRequestParams) -> Single<TokenDTO> {
28-
return request(.login(req: req))
28+
func signin(req: SigninRequestParams) -> Single<TokenDTO> {
29+
return request(.signin(req: req))
2930
.filterSuccessfulStatusCodes()
3031
.map(TokenDTO.self)
3132
}
3233

33-
func signUp(req: SignUpRequestParams) -> Completable {
34-
return request(.signUp(req: req))
34+
func signup(req: SignupRequestParams) -> Completable {
35+
return request(.signup(req: req))
36+
.filterSuccessfulStatusCodes()
37+
.asCompletable()
38+
}
39+
40+
func passwordChange(req: PasswordChangeRequestParams) -> Completable {
41+
return request(.passwordChange(req: req))
3542
.filterSuccessfulStatusCodes()
3643
.asCompletable()
3744
}

Projects/Data/Sources/DataSource/MailDataSource.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import AppNetwork
1010

1111
protocol MailDataSource {
1212
func verifyEmailCode(req: VerifyEmailCodeRequestParams) -> Completable
13-
func mailCodeCheck(req: MailCodeCheckRequestParams) -> Completable
13+
func mailCodeCheck(req: MailCodeCheckRequestParams) -> Single<Bool>
1414
}
1515

1616
class MailSourceImpl: BaseDataSource<MailAPI>, MailDataSource {
@@ -20,9 +20,9 @@ class MailSourceImpl: BaseDataSource<MailAPI>, MailDataSource {
2020
.asCompletable()
2121
}
2222

23-
func mailCodeCheck(req: MailCodeCheckRequestParams) -> Completable {
23+
func mailCodeCheck(req: MailCodeCheckRequestParams) -> Single<Bool> {
2424
return request(.mailCodeCheck(req: req))
2525
.filterSuccessfulStatusCodes()
26-
.asCompletable()
26+
.map(Bool.self)
2727
}
2828
}

Projects/Data/Sources/DataSource/WatchDataSource.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ class WatchDataSourceImpl: NSObject, WatchDataSource, WCSessionDelegate {
3737
return
3838
}
3939

40-
4140
let message: [String: Any] = [
4241
"access_token": keychain.load(type: .accessToken)
4342
]

Projects/Data/Sources/Repository/AuthRepositoryImpl.swift

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,12 @@ class AuthRepositoryImpl: AuthRepository {
1717
init(remoteDataSource: AuthDataSource) {
1818
self.remoteDataSource = remoteDataSource
1919
}
20-
// func signUp(req: SignUpRequestParams) -> Completable {
21-
//
22-
// }
20+
2321
func signin(req: SigninRequestParams) -> Completable {
2422
return Completable.create { [weak self] completable in
2523
guard let self = self else { return Disposables.create {} }
2624

27-
self.remoteDataSource.login(req: req)
25+
self.remoteDataSource.signin(req: req)
2826
.subscribe(onSuccess: { tokenData in
2927
self.keyChain.save(type: .accessToken, value: tokenData.accessToken)
3028
self.keyChain.save(type: .refreshToken, value: tokenData.refreshToken)
@@ -43,8 +41,12 @@ class AuthRepositoryImpl: AuthRepository {
4341
}
4442
}
4543

46-
func signUp(req: SignUpRequestParams) -> Completable {
47-
return remoteDataSource.signUp(req: req)
44+
func signup(req: SignupRequestParams) -> Completable {
45+
return remoteDataSource.signup(req: req)
46+
}
47+
48+
func passwordChange(req: PasswordChangeRequestParams) -> Completable {
49+
return remoteDataSource.passwordChange(req: req)
4850
}
4951

5052
func logout() {

Projects/Data/Sources/Repository/MailRepositoryImpl.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class MailRepositoryImpl: MailRepository {
1515
return remoteDataSource.verifyEmailCode(req: req)
1616
}
1717

18-
func mailCodeCheck(req: MailCodeCheckRequestParams) -> Completable {
18+
func mailCodeCheck(req: MailCodeCheckRequestParams) -> Single<Bool> {
1919
return remoteDataSource.mailCodeCheck(req: req)
2020
}
2121

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import Foundation
2+
3+
public struct PasswordChangeRequestParams: Encodable {
4+
public let password: String
5+
public let code: String
6+
7+
public init(
8+
password: String,
9+
code: String
10+
) {
11+
self.password = password
12+
self.code = code
13+
}
14+
}

Projects/Domain/Sources/Parameter/Auth/SignUpRequestParams.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Foundation
22

3-
public struct SignUpRequestParams: Encodable {
3+
public struct SignupRequestParams: Encodable {
44
public let accountID: String
55
public let password: String
66
public let name: String

0 commit comments

Comments
 (0)