Some google auth fixes

This commit is contained in:
Selim Mustafaev 2020-05-25 13:42:56 +03:00
parent 1cbee99f12
commit 5fd6bf65f3
3 changed files with 26 additions and 4 deletions

View File

@ -15,6 +15,7 @@ class GoogleSignInController: UIViewController, WKNavigationDelegate {
@IBOutlet weak var webView: WKWebView!
private var codeVerifier: String = ""
public var completion: (() -> Void)?
override func viewDidLoad() {
super.viewDidLoad()
@ -60,7 +61,9 @@ class GoogleSignInController: UIViewController, WKNavigationDelegate {
Settings.shared.user.googleIdToken = idToken
Settings.shared.user.googleRefreshToken = refreshToken
DispatchQueue.main.async {
self.dismiss(animated: true, completion: nil)
self.dismiss(animated: true) {
self.completion?()
}
}
}
}

View File

@ -43,11 +43,16 @@ class SettingsController: FormViewController {
func displayLogoutSheet() {
guard let jwtString = Settings.shared.user.googleIdToken, let jwt = JWT(string: jwtString) else { return }
let sheet = UIAlertController(title: jwt.payload.name, message: "You are currently signed in with email \(jwt.payload.email). It allows us to find more data about vehicles.", preferredStyle: .actionSheet)
let sheet = UIAlertController(title: jwt.payload.name, message: "You are currently signed in with email \(jwt.payload.email). It will help to gather more data about vehicles.", preferredStyle: .actionSheet)
let cancel = UIAlertAction(title: "Cancel", style: .cancel) { _ in sheet.dismiss(animated: true, completion: nil) }
let logout = UIAlertAction(title: "Sign Out", style: .destructive) { _ in
Settings.shared.user.googleIdToken = nil
Settings.shared.user.googleRefreshToken = nil
if let googleRow = self.form.rowBy(tag: "GoogleAccount") as? LabelRow {
googleRow.value = "Log In"
googleRow.reload()
}
}
sheet.addAction(logout)
@ -57,7 +62,17 @@ class SettingsController: FormViewController {
func loginToGoogle() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(identifier: "GoogleSignInController")
if let vc = storyboard.instantiateViewController(identifier: "GoogleSignInController") as? GoogleSignInController {
vc.completion = {
guard let googleRow = self.form.rowBy(tag: "GoogleAccount") as? LabelRow else { return }
if let jwtString = Settings.shared.user.googleIdToken, let jwt = JWT(string: jwtString) {
googleRow.value = jwt.payload.email
} else {
googleRow.value = "Log In"
}
googleRow.reload()
}
self.present(vc, animated: true)
}
}
}

View File

@ -72,6 +72,10 @@ class Api {
}
public static func checkVehicle(by number: String) -> Observable<Vehicle> {
if let token = Settings.shared.user.googleIdToken, let jwt = JWT(string: token) {
}
return self.makeRequest(api: "vehicles/check", method: "POST", body: ["number": number]).map { (vehicle: Vehicle) -> Vehicle in
vehicle.addedDate = Date().timeIntervalSince1970*1000
return vehicle