123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- //
- // SplashScreenViewModel.swift
- // LMS
- //
- // Created by Suraj Kumar Mandal on 31/08/22.
- //
- import Foundation
- import Alamofire
- import JWTDecode
- class SplashScreenViewModel {
-
- var delegate: SplashScreenViewProtocol?
-
- func getAccessToken() {
- if let delegate = delegate {
- let url = ApiURL.AccessToken
- let email = UserDefaults.standard.value(forKey: "userName") as! String
- let password = UserDefaults.standard.value(forKey: "password") as! String
-
- let parameters: [String: String] = [
- "username" : email,
- "password" : password,
- "client_id" : AppConstant.ClientId,
- "client_secret" : AppConstant.ClientSecret,
- "grant_type" : "password"
- ]
- print(parameters)
-
- AF.request(url,
- method: .post,
- parameters: parameters,
- encoding: URLEncoding.default)
- .responseJSON { response in
- if response.response?.statusCode == 200 {
- switch response.result {
- case .success(_):
- do {
- // Handle as previously success
- if let json = response.value {
- let data = json as! [String:AnyObject]
- print(data)
-
- let accessToken = data["access_token"] as? String
- let expiresIn = data["expires_in"] as? Int
- let refreshExpiresIn = data["refresh_expires_in"] as? Int
- let refreshToken = data["refresh_token"] as? String
- let tokenType = data["token_type"] as? String
- let sessionState = data["session_state"] as? String
- let scope = data["scope"] as? String
- let notBeforePolicy = data["not-before-policy"] as? Int
- print("Access Token: \(accessToken ?? "")")
-
- let jwt = try decode(jwt: accessToken!)
-
- UserDefaults.standard.set(accessToken, forKey: "accessToken")
- UserDefaults.standard.set(refreshToken, forKey: "refreshToken")
- UserDefaults.standard.set(expiresIn, forKey: "tokenExpire")
- UserDefaults.standard.set(true, forKey: "isLogin")
- UserDefaults.standard.set(jwt.subject, forKey: "decryptedToken")
- UserDefaults.standard.synchronize()
-
- delegate.navigateToHome()
- }
- } catch {
- print("Error while decoding response: \(error)")
- }
-
- break
- case .failure(let error):
- print(error.localizedDescription)
- break
- }
- }
- }
- }
- }
-
- func refreshToken() {
- let url = ApiURL.AccessToken
- let refreshToken = UserDefaults.standard.value(forKey: "refreshToken") as! String
-
- let parameters: [String: String] = [
- "refresh_token" : refreshToken,
- "client_id" : AppConstant.ClientId,
- "client_secret" : AppConstant.ClientSecret,
- "grant_type" : "refresh_token"
- ]
- print(parameters)
-
- AF.request(url, method: .post, parameters: parameters, encoding: URLEncoding.httpBody).responseJSON { (response) in
- if response.response?.statusCode == 200 {
- switch response.result {
- case .success(_):
- do {
- if let json = response.value {
- let data = json as! [String:AnyObject]
- print(data)
-
- let accessToken = data["access_token"] as? String
- let expiresIn = data["expires_in"] as? Int
- let refreshExpiresIn = data["refresh_expires_in"] as? Int
- let refreshToken = data["refresh_token"] as? String
- let tokenType = data["token_type"] as? String
- let sessionState = data["session_state"] as? String
- let scope = data["scope"] as? String
- let notBeforePolicy = data["not-before-policy"] as? Int
- print("Access Token: \(accessToken)")
-
- let jwt = try decode(jwt: accessToken!)
-
- UserDefaults.standard.set(accessToken, forKey: "accessToken")
- UserDefaults.standard.set(refreshToken, forKey: "refreshToken")
- UserDefaults.standard.set(jwt.subject, forKey: "decryptedToken")
- UserDefaults.standard.synchronize()
- }
- } catch {
- print("Error while decoding response: \(error)")
- }
- break
- case .failure(let error):
- print(error.localizedDescription)
- break
- }
- }
- }
- }
-
- }
- protocol SplashScreenViewProtocol {
- func navigateToHome()
- }
|