forked from AcaMate/AcaMate_iOS
[👷] JWT 인증 도입해 로그인 로직 변경
This commit is contained in:
parent
4b32aee2a4
commit
f4233f4562
Binary file not shown.
|
@ -27,8 +27,8 @@ struct NavigationView: View {
|
||||||
LoginView()
|
LoginView()
|
||||||
case .Register(let type, let id):
|
case .Register(let type, let id):
|
||||||
RegisterView(type: type, snsID: id)
|
RegisterView(type: type, snsID: id)
|
||||||
case .SelectAcademy(let bids):
|
case .SelectAcademy:
|
||||||
SelectAcademyView(bids: bids)
|
SelectAcademyView()
|
||||||
case .Main:
|
case .Main:
|
||||||
MainView()
|
MainView()
|
||||||
case .ChatRoom(let id):
|
case .ChatRoom(let id):
|
||||||
|
|
|
@ -36,7 +36,7 @@ struct LoginView: View {
|
||||||
// MARK: - TODO, 애플 계정 로그인 구현
|
// MARK: - TODO, 애플 계정 로그인 구현
|
||||||
// appVM.naviState.set(act: .ADD, path: .SelectAcademy(bids: ["AA0000", "AA0001"]))
|
// appVM.naviState.set(act: .ADD, path: .SelectAcademy(bids: ["AA0000", "AA0001"]))
|
||||||
loginVM.toggleLoading = true
|
loginVM.toggleLoading = true
|
||||||
loginVM.loginTest(type: .Apple, id: "12345678")
|
loginVM.loginTest(type: .Kakao, id: "TestSNSID1")
|
||||||
|
|
||||||
} label: {
|
} label: {
|
||||||
makeButton(image: Image(.Logo.appleIcon), color: Color(.Text.black), "애플 계정으로 시작하기")
|
makeButton(image: Image(.Logo.appleIcon), color: Color(.Text.black), "애플 계정으로 시작하기")
|
||||||
|
|
|
@ -13,7 +13,6 @@ struct SelectAcademyView: View {
|
||||||
|
|
||||||
@State private var scrollOffset: CGPoint = .zero
|
@State private var scrollOffset: CGPoint = .zero
|
||||||
|
|
||||||
var bids: [String]
|
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
VStack(spacing: 0) {
|
VStack(spacing: 0) {
|
||||||
|
@ -84,7 +83,7 @@ struct SelectAcademyView: View {
|
||||||
|
|
||||||
}
|
}
|
||||||
.onAppear {
|
.onAppear {
|
||||||
saVM.loadAcademy(bids: bids)
|
saVM.loadAcademy()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,9 +73,10 @@ class VersionData: Codable {
|
||||||
|
|
||||||
// /api/v1/in/user/login ----------------
|
// /api/v1/in/user/login ----------------
|
||||||
|
|
||||||
class User_Academy: Codable {
|
class User_Token: Codable {
|
||||||
let uid: String
|
let token: String
|
||||||
let bid: [String]
|
let refresh: String
|
||||||
|
// let bids: [String]
|
||||||
}
|
}
|
||||||
|
|
||||||
// /api/v1/in/member/academy ----------------
|
// /api/v1/in/member/academy ----------------
|
||||||
|
|
|
@ -43,7 +43,7 @@ enum PathName: Hashable {
|
||||||
case Intro
|
case Intro
|
||||||
case Login
|
case Login
|
||||||
case Register(_ type: SNSLoginType, id: String)
|
case Register(_ type: SNSLoginType, id: String)
|
||||||
case SelectAcademy(bids: [String])
|
case SelectAcademy
|
||||||
case Main
|
case Main
|
||||||
case ChatRoom(id: String)
|
case ChatRoom(id: String)
|
||||||
case NONE
|
case NONE
|
||||||
|
|
|
@ -24,7 +24,7 @@ class LoginViewModel: ObservableObject {
|
||||||
"acctype": "\(type == .Apple ? "ST00": "ST01")",
|
"acctype": "\(type == .Apple ? "ST00": "ST01")",
|
||||||
"sns_id": "\(id)"
|
"sns_id": "\(id)"
|
||||||
],
|
],
|
||||||
decodingType: APIResponse<User_Academy>.self)
|
decodingType: APIResponse<User_Token>.self)
|
||||||
.sink { [weak self] completion in
|
.sink { [weak self] completion in
|
||||||
// API 자체적으로 내보내는 에러는 여기서 거를거고
|
// API 자체적으로 내보내는 에러는 여기서 거를거고
|
||||||
switch completion {
|
switch completion {
|
||||||
|
@ -36,16 +36,19 @@ class LoginViewModel: ObservableObject {
|
||||||
}
|
}
|
||||||
} receiveValue: { [weak self] response in
|
} receiveValue: { [weak self] response in
|
||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
guard let userAcademy = response as? APIResponse<User_Academy> else {return}
|
guard let userToken = response as? APIResponse<User_Token> else {return}
|
||||||
switch userAcademy.status.code {
|
switch userToken.status.code {
|
||||||
case .success:
|
case .success:
|
||||||
if let bids = userAcademy.data.toStringDict()["bid"] {
|
@UserDefault(key: "token", defaultValue: "accToken") var accToken
|
||||||
printLog(bids)
|
@UserDefault(key: "refresh", defaultValue: "arefreshToken") var refreshToken
|
||||||
if let bidArray: [String] = jsonToSwift(bids) {
|
|
||||||
self.pathName = .SelectAcademy(bids: bidArray)
|
if let token = userToken.data.toStringDict()["token"],
|
||||||
} else {
|
let refresh = userToken.data.toStringDict()["refresh"] {
|
||||||
printLog("JSON 변환 실패")
|
printLog(token)
|
||||||
}
|
printLog(refresh)
|
||||||
|
accToken = token
|
||||||
|
refreshToken = refresh
|
||||||
|
self.pathName = .SelectAcademy
|
||||||
}
|
}
|
||||||
case .anything(let apiCode):
|
case .anything(let apiCode):
|
||||||
// MARK: TO-DO
|
// MARK: TO-DO
|
||||||
|
@ -69,7 +72,7 @@ class LoginViewModel: ObservableObject {
|
||||||
"acctype": "\(type == .Apple ? "ST00": "ST01")",
|
"acctype": "\(type == .Apple ? "ST00": "ST01")",
|
||||||
"sns_id": "\(snsId.snsId)"
|
"sns_id": "\(snsId.snsId)"
|
||||||
],
|
],
|
||||||
decodingType: APIResponse<User_Academy>.self)
|
decodingType: APIResponse<User_Token>.self)
|
||||||
|
|
||||||
}
|
}
|
||||||
.sink { [weak self] completion in
|
.sink { [weak self] completion in
|
||||||
|
@ -82,11 +85,11 @@ class LoginViewModel: ObservableObject {
|
||||||
}
|
}
|
||||||
} receiveValue: { [weak self] response in
|
} receiveValue: { [weak self] response in
|
||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
guard let userAcademy = response as? APIResponse<User_Academy> else {return}
|
guard let userAcademy = response as? APIResponse<User_Token> else {return}
|
||||||
if let bids = userAcademy.data.toStringDict()["bid"] {
|
if let bids = userAcademy.data.toStringDict()["bid"] {
|
||||||
printLog(bids)
|
printLog(bids)
|
||||||
if let bidArray: [String] = jsonToSwift(bids) {
|
if let bidArray: [String] = jsonToSwift(bids) {
|
||||||
self.pathName = .SelectAcademy(bids: bidArray)
|
self.pathName = .SelectAcademy
|
||||||
} else {
|
} else {
|
||||||
printLog("JSON 변환 실패")
|
printLog("JSON 변환 실패")
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,11 +15,13 @@ class SelectAcademyViewModel: ObservableObject {
|
||||||
@Published var academyList: [AcademyName] = []
|
@Published var academyList: [AcademyName] = []
|
||||||
@Published var selectNum: Int = -1
|
@Published var selectNum: Int = -1
|
||||||
|
|
||||||
func loadAcademy(bids: [String]) {
|
func loadAcademy() {
|
||||||
|
@UserDefault(key: "token", defaultValue: "accToken") var token
|
||||||
|
@UserDefault(key: "refresh", defaultValue: "arefreshToken") var refresh
|
||||||
loadAPIData(url: "\(API_URL)",
|
loadAPIData(url: "\(API_URL)",
|
||||||
path: "/api/v1/in/user/academy",
|
path: "/api/v1/in/user/academy",
|
||||||
method: .post,
|
method: .get,
|
||||||
parameters: ["bids": bids],
|
parameters: ["token": token, "refresh": refresh],
|
||||||
decodingType: APIResponse<[AcademyName]>.self)
|
decodingType: APIResponse<[AcademyName]>.self)
|
||||||
.sink { completion in
|
.sink { completion in
|
||||||
switch completion {
|
switch completion {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user