forked from AcaMate/AcaMate_iOS
[✨] 계정 토큰 관리 방법 변경에 따른 로직 추가
This commit is contained in:
parent
a825ff927e
commit
195298dea1
Binary file not shown.
|
@ -10,6 +10,7 @@ import SwiftUI
|
|||
struct RegisterView: View {
|
||||
@EnvironmentObject var appVM: AppViewModel
|
||||
@StateObject private var topVM = TopViewModel()
|
||||
@StateObject var btnVM = ButtonViewModel()
|
||||
|
||||
@State private var scrollOffset: CGPoint = .zero
|
||||
|
||||
|
@ -41,6 +42,7 @@ struct RegisterView: View {
|
|||
|
||||
}
|
||||
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
||||
|
||||
}
|
||||
.onAppear {
|
||||
topVM.titleName = "회원가입"
|
||||
|
|
|
@ -66,6 +66,13 @@ class VersionData: Codable {
|
|||
|
||||
}
|
||||
|
||||
// /api/v1/in/app/retryAccess ----------------
|
||||
class Access: Codable {
|
||||
let access: String
|
||||
}
|
||||
|
||||
|
||||
|
||||
// /api/v1/in/user/login ----------------
|
||||
|
||||
class User_Token: Codable {
|
||||
|
|
16
AcaMate/2. Model/CustomError.swift
Normal file
16
AcaMate/2. Model/CustomError.swift
Normal file
|
@ -0,0 +1,16 @@
|
|||
//
|
||||
// CustomError.swift
|
||||
// AcaMate
|
||||
//
|
||||
// Created by TAnine on 3/14/25.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
class ACA_ERROR: Error {
|
||||
let message: String
|
||||
|
||||
init(_ msg: String) {
|
||||
message = msg
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@ class SelectAcademyViewModel: ObservableObject {
|
|||
|
||||
func loadAcademy() {
|
||||
@UserDefault(key: "token", defaultValue: "accToken") var token
|
||||
@UserDefault(key: "refresh", defaultValue: "arefreshToken") var refresh
|
||||
@UserDefault(key: "refresh", defaultValue: "refreshToken") var refresh
|
||||
loadAPIData(url: "\(API_URL)",
|
||||
path: "/api/v1/in/user/academy",
|
||||
method: .get,
|
||||
|
|
|
@ -40,4 +40,45 @@ public func loadAPIData<T: Decodable>(url: String, path: String,
|
|||
}
|
||||
}
|
||||
|
||||
public func reloadAccessToken() -> Future<Any, Error> {
|
||||
@UserDefault(key: "refresh", defaultValue: "refreshToken") var refresh
|
||||
return Future { promise in
|
||||
_ = loadAPIData(url: "\(API_URL)",
|
||||
path: "/api/v1/in/app/retryAccess",
|
||||
parameters: ["refresh": refresh],
|
||||
decodingType: APIResponse<Access>.self)
|
||||
.sink { completion in
|
||||
switch completion {
|
||||
case .failure(let error):
|
||||
promise(.failure(error))
|
||||
printLog("\(error)")
|
||||
case .finished:
|
||||
printLog("엑세스 토큰 재발급 완료")
|
||||
break
|
||||
}
|
||||
} receiveValue: { response in
|
||||
guard let accToken = response as? APIResponse<Access> else {
|
||||
promise(.failure(ACA_ERROR("Unknown ERROR")))
|
||||
return
|
||||
}
|
||||
|
||||
switch accToken.status.code {
|
||||
case .success(let code):
|
||||
if code == "000" {
|
||||
if let tknData = accToken.data { promise(.success(tknData)) }
|
||||
}
|
||||
case .inputErr(let code):
|
||||
// 로그인 화면으로 전환하기
|
||||
promise(.failure(ACA_ERROR("Refresh token ERROR(\(code), \(accToken.status.message)")))
|
||||
default:
|
||||
// 그외에 서버에서 처리를 하다가 문제가 생겨서 발생하는 에러는 여기로 보낼거임
|
||||
promise(.failure(ACA_ERROR("Unknown ERROR")))
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user