Skip to content

Commit

Permalink
Merge pull request #33 from Cidaas/development
Browse files Browse the repository at this point in the history
Development
  • Loading branch information
cidaas-samples authored Nov 16, 2018
2 parents 42c5146 + d758a63 commit 2fe0b8a
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public class AccessTokenController {
let seconds = Int64(milliseconds / 1000)

let accessTokenModel = DBHelper.shared.getAccessToken(key: sub)
let expires = accessTokenModel.expiresIn
let expires = accessTokenModel.expires_in
let secs: Int64 = Int64(accessTokenModel.seconds)
let expires_in = expires + secs - 10

Expand Down Expand Up @@ -103,7 +103,7 @@ public class AccessTokenController {
}

// call access token from refresh token service
AccessTokenService.shared.getAccessToken(refreshToken: accessTokenModel.refreshToken, properties: properties!) {
AccessTokenService.shared.getAccessToken(refreshToken: accessTokenModel.refresh_token, properties: properties!) {
switch $0 {
case .failure(let error):

Expand Down
32 changes: 13 additions & 19 deletions Cidaas/Classes/Core/Helpers/Converter/EntityToModelConverter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ public class EntityToModelConverter {
public func accessTokenEntityToAccessTokenModel(accessTokenEntity : AccessTokenEntity, callback: @escaping (AccessTokenModel)-> Void) {

AccessTokenModel.shared.salt = randomString(length: 16)
AccessTokenModel.shared.expiresIn = accessTokenEntity.expires_in
AccessTokenModel.shared.idToken = accessTokenEntity.id_token
AccessTokenModel.shared.refreshToken = accessTokenEntity.refresh_token
AccessTokenModel.shared.userId = accessTokenEntity.sub
AccessTokenModel.shared.accessToken = try! accessTokenEntity.access_token.aesEncrypt(key: AccessTokenModel.shared.salt, iv: AccessTokenModel.shared.salt)
AccessTokenModel.shared.isEncrypted = true
AccessTokenModel.shared.key = randomString(length: 16)
AccessTokenModel.shared.expires_in = accessTokenEntity.expires_in
AccessTokenModel.shared.id_token = accessTokenEntity.id_token
AccessTokenModel.shared.refresh_token = accessTokenEntity.refresh_token
AccessTokenModel.shared.sub = accessTokenEntity.sub
AccessTokenModel.shared.access_token = try! accessTokenEntity.access_token.aesEncrypt(key: AccessTokenModel.shared.key, iv: AccessTokenModel.shared.salt)

callback(AccessTokenModel.shared)
}
Expand All @@ -31,20 +31,14 @@ public class EntityToModelConverter {
public func accessTokenModelToAccessTokenEntity(accessTokenModel : AccessTokenModel = AccessTokenModel.shared, callback: @escaping (AccessTokenEntity)-> Void) {
let accessTokenEntity = AccessTokenEntity()

accessTokenEntity.expires_in = accessTokenModel.expires_in
accessTokenEntity.id_token = accessTokenModel.id_token
accessTokenEntity.refresh_token = accessTokenModel.refresh_token
accessTokenEntity.sub = accessTokenModel.sub

accessTokenEntity.access_token = try! accessTokenModel.access_token.aesDecrypt(key: accessTokenModel.key, iv: accessTokenModel.salt)

accessTokenEntity.expires_in = accessTokenModel.expiresIn
accessTokenEntity.id_token = accessTokenModel.idToken
accessTokenEntity.refresh_token = accessTokenModel.refreshToken
accessTokenEntity.sub = accessTokenModel.userId

if accessTokenModel.isEncrypted == true {
accessTokenEntity.access_token = try! accessTokenModel.accessToken.aesDecrypt(key: accessTokenModel.salt, iv: accessTokenModel.salt)
callback(accessTokenEntity)
}
else {
accessTokenEntity.access_token = accessTokenModel.accessToken
callback(accessTokenEntity)
}
callback(accessTokenEntity)
}

public func randomString(length: Int) -> String {
Expand Down
2 changes: 1 addition & 1 deletion Cidaas/Classes/Core/Helpers/General/DBHelper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ public class DBHelper : NSObject {
public func setAccessToken(accessTokenModel : AccessTokenModel) {
let encoder = JSONEncoder()
do {
let userId = accessTokenModel.userId
let userId = accessTokenModel.sub
let data = try encoder.encode(accessTokenModel)
let access_token_string = String(data : data, encoding : .utf8)
userDefaults.set(access_token_string, forKey: "cidaas_user_details_\(userId)")
Expand Down
29 changes: 21 additions & 8 deletions Cidaas/Classes/Core/Models/AccessTokenModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,33 @@ public class AccessTokenModel : Codable {
public static var shared : AccessTokenModel = AccessTokenModel()

// properties
public var accessToken: String = ""
public var userState: String = ""
public var refreshToken: String = ""
public var access_token: String = ""
public var userstate: String = ""
public var refresh_token: String = ""
public var scope: String = ""
public var idToken: String = ""
public var expiresIn: Int64 = 0
public var isEncrypted: Bool = false
public var id_token: String = ""
public var expires_in: Int64 = 0
public var salt: String = ""
public var userId: String = ""
public var sub: String = ""
public var seconds: Int64 = 0
public var plainToken : String = ""
public var key: String = ""

// Constructors
public init() {

}

public required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.access_token = try container.decodeIfPresent(String.self, forKey: .access_token) ?? ""
self.userstate = try container.decodeIfPresent(String.self, forKey: .userstate) ?? ""
self.refresh_token = try container.decodeIfPresent(String.self, forKey: .refresh_token) ?? ""
self.scope = try container.decodeIfPresent(String.self, forKey: .scope) ?? ""
self.id_token = try container.decodeIfPresent(String.self, forKey: .id_token) ?? ""
self.salt = try container.decodeIfPresent(String.self, forKey: .salt) ?? ""
self.sub = try container.decodeIfPresent(String.self, forKey: .sub) ?? ""
self.key = try container.decodeIfPresent(String.self, forKey: .key) ?? ""
self.seconds = try container.decodeIfPresent(Int64.self, forKey: .seconds) ?? 0
self.expires_in = try container.decodeIfPresent(Int64.self, forKey: .expires_in) ?? 0
}
}
7 changes: 6 additions & 1 deletion Cidaas/Classes/Core/Views/Cidaas.swift
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ public class Cidaas {
// -------------------------------------------------------------------------------------------------- //

// set url manually
public func setURL(domainURL: String, clientId: String, redirectURL: String) {
public func setURL(domainURL: String, clientId: String, redirectURL: String, userDeviceId: String = "") {
FileHelper.shared.paramsToDictionaryConverter(domainURL: domainURL, clientId: clientId, redirectURL: redirectURL) {
switch $0 {
case .failure(let error):
Expand All @@ -165,6 +165,11 @@ public class Cidaas {
// log success
let loggerMessage = "Saved Property status : \(response)"
logw(loggerMessage, cname: "cidaas-sdk-success-log")

if userDeviceId != "" {
DBHelper.shared.setUserDeviceId(userDeviceId: userDeviceId, key: properties["DomainURL"] ?? "")
}

break
}
}
Expand Down
6 changes: 3 additions & 3 deletions Example/Tests/ControllerTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -195,10 +195,10 @@ class ControllerTests: QuickSpec {
let seconds = Int64(milliseconds)

let accessTokenModel = AccessTokenModel()
accessTokenModel.accessToken = "12345"
accessTokenModel.expiresIn = 86400
accessTokenModel.access_token = "12345"
accessTokenModel.expires_in = 86400
accessTokenModel.seconds = seconds + 86400
accessTokenModel.userId = "hjghfhhhg"
accessTokenModel.sub = "hjghfhhhg"

DBHelper.shared.setAccessToken(accessTokenModel: accessTokenModel)

Expand Down
2 changes: 1 addition & 1 deletion Example/Tests/HelperTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ class HelperTests: QuickSpec {
it("call set and get access token") {
let db = DBHelper.shared
let accessTokenModel = AccessTokenModel()
accessTokenModel.userId = "765q763572"
accessTokenModel.sub = "765q763572"
db.setAccessToken(accessTokenModel: accessTokenModel)
_ = db.getAccessToken(key: "765q763572")
}
Expand Down

0 comments on commit 2fe0b8a

Please sign in to comment.