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 {
|
struct RegisterView: View {
|
||||||
@EnvironmentObject var appVM: AppViewModel
|
@EnvironmentObject var appVM: AppViewModel
|
||||||
@StateObject private var topVM = TopViewModel()
|
@StateObject private var topVM = TopViewModel()
|
||||||
|
@StateObject var btnVM = ButtonViewModel()
|
||||||
|
|
||||||
@State private var scrollOffset: CGPoint = .zero
|
@State private var scrollOffset: CGPoint = .zero
|
||||||
|
|
||||||
|
@ -41,6 +42,7 @@ struct RegisterView: View {
|
||||||
|
|
||||||
}
|
}
|
||||||
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
||||||
|
|
||||||
}
|
}
|
||||||
.onAppear {
|
.onAppear {
|
||||||
topVM.titleName = "회원가입"
|
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 ----------------
|
// /api/v1/in/user/login ----------------
|
||||||
|
|
||||||
class User_Token: Codable {
|
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() {
|
func loadAcademy() {
|
||||||
@UserDefault(key: "token", defaultValue: "accToken") var token
|
@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)",
|
loadAPIData(url: "\(API_URL)",
|
||||||
path: "/api/v1/in/user/academy",
|
path: "/api/v1/in/user/academy",
|
||||||
method: .get,
|
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