登录逻辑的完善
This commit is contained in:
@@ -8,21 +8,71 @@
|
||||
import Foundation
|
||||
import RxSwift
|
||||
class AuthViewModel: NSObject {
|
||||
|
||||
static let authVM = AuthViewModel.init()
|
||||
let data = PublishSubject<Bool>()
|
||||
let token = PublishSubject<UserTokenObject?>()
|
||||
let loginSuccess = PublishSubject<Bool>()
|
||||
|
||||
func getSmsCode(phone:String, type:Int) {
|
||||
if let phoneDes = phone.encrypt() {
|
||||
let params:[String: Any] = ["mobile":phoneDes, "type":type]
|
||||
YMNetworkHelper.share.requestSend(type: .post, path: "sms/getCode", params: params, succeed: { data in
|
||||
RequestPost(path: "sms/getCode", parma: params) { data in
|
||||
self.data.onNext(true)
|
||||
}, fail: { code, msg in
|
||||
self.data.onNext(false)
|
||||
})
|
||||
} fail: { code, message in
|
||||
self.data.onNext(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func authPhoneCode(phone:String, code:String) {
|
||||
|
||||
if let phoneDes = phone.encrypt() {
|
||||
let params = ["phone":phoneDes, "code":code, "client_secret":"uyzjdhds", "version":"1", "client_id":"erban-client", "grant_type":"password"]
|
||||
RequestPost(path: "oauth/token", parma: params) { data in
|
||||
if let account = Deserialized<UserTokenObject>.toModel(with: data) {
|
||||
LoginTokenConfig.config.saveTokenToLocaltion(token: account)
|
||||
self.token.onNext(account)
|
||||
self.token.onCompleted()
|
||||
///进行token的置换
|
||||
if let accessToken = account.access_token {
|
||||
self.tokenTransformTicket(accesToken: accessToken)
|
||||
}
|
||||
}
|
||||
} fail: { code, data in
|
||||
self.token.onNext(nil)
|
||||
self.token.onCompleted()
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
///通过token获取ticket
|
||||
func tokenTransformTicket(accesToken:String) {
|
||||
let params = ["access_token": accesToken, "issue_type": "multi"]
|
||||
RequestPost(path: "oauth/ticket", parma: params) { data in
|
||||
///登录成功
|
||||
if let dic = data as? [String: Any], let tickets = dic["tickets"] as? [[String: Any]], let ticket1 = tickets[safe: 0], let ticket = ticket1["ticket"] as? String{
|
||||
LoginTokenConfig.config.saveTicketToLoaction(ticket: ticket)
|
||||
self.loginSuccess.onNext(true)
|
||||
} else {
|
||||
self.loginSuccess.onNext(false)
|
||||
}
|
||||
} fail: { code, message in
|
||||
self.loginSuccess.onNext(false)
|
||||
}
|
||||
}
|
||||
|
||||
func checkUserIsLogin() {
|
||||
if let account = LoginTokenConfig.config.getAccountInfo(), let token = account.access_token {
|
||||
let ticket = AuthManager.ticket
|
||||
if ticket.count > 0 {
|
||||
///如果内容都有的话 就是直接登录
|
||||
self.loginSuccess.onNext(true)
|
||||
} else {
|
||||
/// 如果没有ticket的话 去置换ticket
|
||||
tokenTransformTicket(accesToken: token)
|
||||
}
|
||||
} else {
|
||||
self.loginSuccess.onNext(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user