182 lines
5.7 KiB
Swift
182 lines
5.7 KiB
Swift
//
|
|
// AuthViewModel.swift
|
|
// yinmeng-ios
|
|
//
|
|
// Created by MaiMang on 2024/2/22.
|
|
//
|
|
|
|
import Foundation
|
|
import RxSwift
|
|
import NIMSDK
|
|
import MBProgressHUD
|
|
class AuthViewModel: NSObject {
|
|
static let authVM = AuthViewModel.init()
|
|
let data = PublishSubject<Bool>()
|
|
let token = PublishSubject<UserTokenObject?>()
|
|
let loginSuccess = BehaviorSubject(value: false)
|
|
let resetPwd = PublishSubject<Bool>()
|
|
|
|
func appClientConfig() {
|
|
RequestGet(path: "client/init", parma: [:]) { data in
|
|
|
|
} fail: { code, message in
|
|
|
|
}
|
|
}
|
|
|
|
func logout() {
|
|
if NIMSDK.shared().loginManager.isLogined() {
|
|
NIMSDK.shared().loginManager.logout()
|
|
}
|
|
let token = LoginTokenConfig.config.getAccountInfo()?.access_token
|
|
LoginTokenConfig.config.removeTicketFromLoaction()
|
|
LoginTokenConfig.config.removeTicketFromLoaction()
|
|
if let token = token {
|
|
let params = ["auaccess_token": token]
|
|
RequestPost(path: "acc/logout", parma: params) { data in
|
|
print("你好")
|
|
} fail: { code, msg in
|
|
print("de")
|
|
}
|
|
}
|
|
self.loginSuccess.onNext(false)
|
|
}
|
|
|
|
///获取验证码
|
|
func getSmsCode(phone:String, type:Int) {
|
|
if let phoneDes = phone.encrypt() {
|
|
let params:[String: Any] = ["mobile":phoneDes, "type":type]
|
|
RequestPost(path: "sms/getCode", parma: params) { data in
|
|
self.data.onNext(true)
|
|
} fail: { code, message in
|
|
self.data.onNext(true)
|
|
}
|
|
}
|
|
}
|
|
|
|
///账号密码登录
|
|
func authPhoneCode(phone:String, code:String) {
|
|
if let phoneDes = phone.encrypt() {
|
|
MBProgressHUD.showAdded(to: UIApplication.shared.keyWindow!, animated: true)
|
|
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 window = UIApplication.shared.keyWindow{
|
|
MBProgressHUD.hide(for: window, animated: true)
|
|
}
|
|
|
|
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
|
|
if let window = UIApplication.shared.keyWindow{
|
|
MBProgressHUD.hide(for: window, animated: true)
|
|
}
|
|
HUDTool.show(with: data)
|
|
self.token.onNext(nil)
|
|
self.token.onCompleted()
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
///ID登录
|
|
func authIDPassword(account:String, password: String) {
|
|
if let phoneDes = account.encrypt(), let pwdDes = password.encrypt() {
|
|
MBProgressHUD.showAdded(to: UIApplication.shared.keyWindow!, animated: true)
|
|
let params = ["phone":phoneDes, "password":pwdDes, "client_secret":"uyzjdhds", "version":"1", "client_id":"erban-client", "grant_type":"password"]
|
|
RequestPost(path: "oauth/token", parma: params) { data in
|
|
if let window = UIApplication.shared.keyWindow{
|
|
MBProgressHUD.hide(for: window, animated: true)
|
|
}
|
|
|
|
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
|
|
if let window = UIApplication.shared.keyWindow{
|
|
MBProgressHUD.hide(for: window, animated: true)
|
|
}
|
|
HUDTool.show(with: data)
|
|
self.token.onNext(nil)
|
|
self.token.onCompleted()
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
func authApple(params:[String: Any]) {
|
|
var par = params
|
|
par.updateValue("5", forKey: "type")
|
|
RequestPost(path: "acc/third/login", parma: par) { 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, msg 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 resetPassword(phone:String, newPwd:String, smsCode:String) {
|
|
if let phoneDes = phone.encrypt(), let pwdDes = newPwd.encrypt() {
|
|
let params = ["phone":phoneDes, "newPwd":pwdDes, "smsCode": smsCode]
|
|
RequestPost(path: "acc/pwd/reset", parma: params) { data in
|
|
self.resetPwd.onNext(true)
|
|
} fail: { code, message in
|
|
self.resetPwd.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)
|
|
}
|
|
}
|
|
}
|