Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Fix] #116 - 로그인 로직 수정 #122

Merged
merged 4 commits into from
Jun 25, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions iOS-NOTTODO/iOS-NOTTODO/Application/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {

KakaoSDK.initSDK(appKey: "f06c671df540ff4a8f8275f453368748")

// 낫투두 서버로부터 받은 토큰이 유효할 경우
// 토큰이 유효한지 확인할 방법이 없으므로 UserDefaults에 값이 있는 경우로 대체
if KeychainUtil.getAccessToken() != "" {
// self.skipAuthView()
self.skipAuthView()
print("토큰유효!!!!!")
} else {
// self.showAuthView()
Expand Down
7 changes: 4 additions & 3 deletions iOS-NOTTODO/iOS-NOTTODO/Global/Enum/DefaultKeys.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,10 @@ enum LoginType {
}

struct DefaultKeys {
static let userId = "userId"
static let email = "email"
static let name = "name"
static let kakaoEmail = "kakaoEmail"
static let kakaoName = "kakaoName"
static let appleEmail = "appleEmail"
static let appleName = "appleName"
static let isAppleLogin = "isAppleLogin"
static let isKakaoLogin = "isKakaoLogin"
static let socialToken = "socialToken"
Expand Down
21 changes: 19 additions & 2 deletions iOS-NOTTODO/iOS-NOTTODO/Network/API/Auth/AuthAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,25 @@ final class AuthAPI {

// MARK: - POST

func postAuth(social: String, socialToken: String, fcmToken: String, name: String, email: String, completion: @escaping (GeneralResponse<AuthResponseDTO>?) -> Void) {
authProvider.request(.auth(social: social, socialToken: socialToken, fcmToken: fcmToken, name: name, email: email)) { result in
func postKakaoAuth(social: String, socialToken: String, fcmToken: String, completion: @escaping (GeneralResponse<AuthResponseDTO>?) -> Void) {
authProvider.request(.kakaoAuth(social: social, socialToken: socialToken, fcmToken: fcmToken)) { result in
switch result {
case .success(let response):
do {
guard let authData = try response.map(GeneralResponse<AuthResponseDTO>?.self) else { return }
completion(authData)
} catch let err {
print(err.localizedDescription, 500)
}
case .failure(let err):
print(err.localizedDescription)
completion(nil)
}
}
}

func postAppleAuth(social: String, socialToken: String, fcmToken: String, name: String, completion: @escaping (GeneralResponse<AuthResponseDTO>?) -> Void) {
authProvider.request(.appleAuth(social: social, socialToken: socialToken, fcmToken: fcmToken, name: name)) { result in
switch result {
case .success(let response):
do {
Expand Down
16 changes: 10 additions & 6 deletions iOS-NOTTODO/iOS-NOTTODO/Network/Service/Auth/AuthService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ import Foundation
import Moya

enum AuthService {
case auth(social: String, socialToken: String, fcmToken: String, name: String, email: String)
case kakaoAuth(social: String, socialToken: String, fcmToken: String)
case appleAuth(social: String, socialToken: String, fcmToken: String, name: String)
case logout
case withdrawal
}
Expand All @@ -22,7 +23,7 @@ extension AuthService: TargetType {

var path: String {
switch self {
case .auth(let social, _, _, _, _):
case .kakaoAuth(let social, _, _), .appleAuth(let social, _, _, _):
return URLConstant.auth + "/\(social)"
case .logout:
return URLConstant.authLogout
Expand All @@ -33,7 +34,7 @@ extension AuthService: TargetType {

var method: Moya.Method {
switch self {
case .auth:
case .kakaoAuth, .appleAuth:
return .post
case .logout:
return .delete
Expand All @@ -43,8 +44,11 @@ extension AuthService: TargetType {
}
var task: Moya.Task {
switch self {
case .auth(_, let socialToken, let fcmToken, let name, let email):
return .requestParameters(parameters: ["socialToken": socialToken, "fcmToken": fcmToken, "name": name, "email": email],
case .kakaoAuth(_, let socialToken, let fcmToken):
return .requestParameters(parameters: ["socialToken": socialToken, "fcmToken": fcmToken],
encoding: JSONEncoding.default)
case .appleAuth(_, let socialToken, let fcmToken, let name):
return .requestParameters(parameters: ["socialToken": socialToken, "fcmToken": fcmToken, "name": name],
encoding: JSONEncoding.default)
case .logout, .withdrawal:
return .requestPlain
Expand All @@ -53,7 +57,7 @@ extension AuthService: TargetType {

var headers: [String: String]? {
switch self {
case .auth:
case .kakaoAuth, .appleAuth:
return NetworkConstant.noTokenHeader
case .logout, .withdrawal:
return ["Content-Type": "application/json",
Expand Down
45 changes: 24 additions & 21 deletions iOS-NOTTODO/iOS-NOTTODO/Presentation/Auth/AuthViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -140,18 +140,7 @@ extension AuthViewController {
}

}

private func requestAuthAPI(social: String, socialToken: String, fcmToken: String, name: String, email: String) {
AuthAPI.shared.postAuth(social: social, socialToken: socialToken, fcmToken: fcmToken, name: name, email: email) { [weak self] result in
guard self != nil else { return }
guard result != nil else { return }
// accessToken userDefault에 저장
guard let accessToken = result?.data?.accessToken else { return }
KeychainUtil.setAccessToken(accessToken)
self?.presentToHomeViewController()
}
}


// MARK: - @objc Methods

@objc func moreButtonTapped() {
Expand Down Expand Up @@ -219,11 +208,18 @@ extension AuthViewController {
let name = user?.kakaoAccount?.name
let email = user?.kakaoAccount?.email

KeychainUtil.setString(name, forKey: DefaultKeys.name)
KeychainUtil.setString(email, forKey: DefaultKeys.email)
KeychainUtil.setString(name, forKey: DefaultKeys.kakaoName)
KeychainUtil.setString(email, forKey: DefaultKeys.kakaoEmail)
KeychainUtil.setBool(false, forKey: DefaultKeys.isAppleLogin)

self.requestAuthAPI(social: LoginType.Kakao.social, socialToken: KeychainUtil.getSocialToken(), fcmToken: DefaultKeys.fcmToken, name: KeychainUtil.getUsername(), email: KeychainUtil.getEmail())
AuthAPI.shared.postKakaoAuth(social: LoginType.Kakao.social, socialToken: KeychainUtil.getSocialToken(), fcmToken: DefaultKeys.fcmToken) { [weak self] result in
guard self != nil else { return }
guard result != nil else { return }

guard let accessToken = result?.data?.accessToken else { return }
KeychainUtil.setAccessToken(accessToken)
self?.presentToHomeViewController()
}
}
}
}
Expand Down Expand Up @@ -256,20 +252,27 @@ extension AuthViewController: ASAuthorizationControllerDelegate, ASAuthorization
}
}

if let email = appleIDCredential.email {
KeychainUtil.setString(email, forKey: DefaultKeys.email)
}

let firstName = appleIDCredential.fullName?.givenName
let lastName = appleIDCredential.fullName?.familyName
if let firstName = firstName, let lastName = lastName {
let fullName = "\(lastName)\(firstName)"
KeychainUtil.setString(fullName, forKey: DefaultKeys.name)
KeychainUtil.setString(fullName, forKey: DefaultKeys.appleName)
}

if let email = appleIDCredential.email {
KeychainUtil.setString(email, forKey: DefaultKeys.appleEmail)
}

KeychainUtil.setBool(true, forKey: DefaultKeys.isAppleLogin)

self.requestAuthAPI(social: LoginType.Apple.social, socialToken: KeychainUtil.getSocialToken(), fcmToken: DefaultKeys.fcmToken, name: KeychainUtil.getUsername(), email: KeychainUtil.getEmail())
AuthAPI.shared.postAppleAuth(social: LoginType.Apple.social, socialToken: KeychainUtil.getSocialToken(), fcmToken: DefaultKeys.fcmToken, name: KeychainUtil.getUsername()) { [weak self] result in
guard self != nil else { return }
guard result != nil else { return }

guard let accessToken = result?.data?.accessToken else { return }
KeychainUtil.setAccessToken(accessToken)
self?.presentToHomeViewController()
}
default:
break
}
Expand Down