|
|
|
|
@ -209,7 +209,7 @@ public class Services { |
|
|
|
|
request.httpMethod = method.rawValue |
|
|
|
|
request.setValue("application/json", forHTTPHeaderField: "Content-Type") |
|
|
|
|
if !(requiresToken == false) { |
|
|
|
|
let token = try self.keychainStore.getToken() |
|
|
|
|
let token = try self.keychainStore.getValue() |
|
|
|
|
request.addValue("Token \(token)", forHTTPHeaderField: "Authorization") |
|
|
|
|
} |
|
|
|
|
return request |
|
|
|
|
@ -255,7 +255,7 @@ public class Services { |
|
|
|
|
|
|
|
|
|
if self._isTokenRequired(type: T.self, method: apiCall.method) { |
|
|
|
|
do { |
|
|
|
|
let token = try self.keychainStore.getToken() |
|
|
|
|
let token = try self.keychainStore.getValue() |
|
|
|
|
request.setValue("Token \(token)", forHTTPHeaderField: "Authorization") |
|
|
|
|
} catch { |
|
|
|
|
Logger.log("missing token") |
|
|
|
|
@ -298,7 +298,10 @@ public class Services { |
|
|
|
|
/// - password: the account's password |
|
|
|
|
public func requestToken(username: String, password: String) async throws -> String { |
|
|
|
|
var postRequest = try self._baseRequest(conf: .requestToken) |
|
|
|
|
let credentials = Credentials(username: username, password: password, deviceId: StoreCenter.main.deviceId()) |
|
|
|
|
|
|
|
|
|
let deviceId = StoreCenter.main.deviceId() |
|
|
|
|
Logger.log("deviceId = \(deviceId)") |
|
|
|
|
let credentials = Credentials(username: username, password: password, deviceId: deviceId) |
|
|
|
|
postRequest.httpBody = try jsonEncoder.encode(credentials) |
|
|
|
|
let response: AuthResponse = try await self._runRequest(postRequest) |
|
|
|
|
self._storeToken(username: username, token: response.token) |
|
|
|
|
@ -311,8 +314,8 @@ public class Services { |
|
|
|
|
/// - token: the token to store |
|
|
|
|
fileprivate func _storeToken(username: String, token: String) { |
|
|
|
|
do { |
|
|
|
|
try self.keychainStore.deleteToken() |
|
|
|
|
try self.keychainStore.add(username: username, token: token) |
|
|
|
|
try self.keychainStore.deleteValue() |
|
|
|
|
try self.keychainStore.add(username: username, value: token) |
|
|
|
|
} catch { |
|
|
|
|
Logger.error(error) |
|
|
|
|
} |
|
|
|
|
@ -376,13 +379,13 @@ public class Services { |
|
|
|
|
|
|
|
|
|
/// Deletes the locally stored token |
|
|
|
|
func deleteToken() throws { |
|
|
|
|
try self.keychainStore.deleteToken() |
|
|
|
|
try self.keychainStore.deleteValue() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// Returns whether the Service has an associated token |
|
|
|
|
public func hasToken() -> Bool { |
|
|
|
|
do { |
|
|
|
|
_ = try self.keychainStore.getToken() |
|
|
|
|
_ = try self.keychainStore.getValue() |
|
|
|
|
return true |
|
|
|
|
} catch { |
|
|
|
|
return false |
|
|
|
|
@ -412,7 +415,7 @@ public class Services { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func migrateToken(_ services: Services, userName: String) throws { |
|
|
|
|
try self._storeToken(username: userName, token: services.keychainStore.getToken()) |
|
|
|
|
try self._storeToken(username: userName, token: services.keychainStore.getValue()) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|