Skip to content

Commit ca6b132

Browse files
committed
Helper methods to add auth headers
1 parent d3eb08d commit ca6b132

File tree

1 file changed

+49
-7
lines changed

1 file changed

+49
-7
lines changed

iOS_SDK/OneSignalSDK/OneSignalUser/Source/Requests/OSUserRequest.swift

Lines changed: 49 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,47 @@ protocol OSUserRequest: OneSignalRequest, NSCoding {
3434
}
3535

3636
internal extension OneSignalRequest {
37-
func addJWTHeader(identityModel: OSIdentityModel) {
38-
// guard let token = identityModel.jwtBearerToken else {
39-
// return
40-
// }
41-
// var additionalHeaders = self.additionalHeaders ?? [String:String]()
42-
// additionalHeaders["Authorization"] = "Bearer \(token)"
43-
// self.additionalHeaders = additionalHeaders
37+
/**
38+
Returns the alias pair to use to send this request for. Defaults to Onesignal Id, unless Identity Verification is on.
39+
*/
40+
func getAlias(identityModel: OSIdentityModel) -> (label: String, id: String?) {
41+
var label = OS_ONESIGNAL_ID
42+
var id = identityModel.onesignalId
43+
if OneSignalUserManagerImpl.sharedInstance.jwtConfig.isRequired == true {
44+
label = OS_EXTERNAL_ID
45+
id = identityModel.externalId
46+
}
47+
return (label, id)
48+
}
49+
50+
/**
51+
Adds JWT token to header if valid, regardless of requirement.
52+
Returns false if JWT requirement is unknown, or turned on but the token is missing or invalid.
53+
54+
| | unknown | on | off |
55+
| --------------- | -------------- | ------- | ------- |
56+
| hasToken | | ✔️ | ✔️ |
57+
| noToken | | | ✔️ |
58+
| --------------- | -------------- | ------- | ------- |
59+
*/
60+
func addJWTHeaderIsValid(identityModel: OSIdentityModel) -> Bool {
61+
let tokenIsValid = identityModel.isJwtValid()
62+
let required = OneSignalUserManagerImpl.sharedInstance.jwtConfig.isRequired
63+
let canBeSent = (required == false) || (required == true && tokenIsValid)
64+
if canBeSent && tokenIsValid,
65+
let token = identityModel.jwtBearerToken
66+
{
67+
// Add the JWT token if it is valid, regardless of requirements
68+
var additionalHeaders = self.additionalHeaders ?? [String: String]()
69+
additionalHeaders["Authorization"] = "Bearer \(token)"
70+
self.additionalHeaders = additionalHeaders
71+
}
72+
return canBeSent
4473
}
4574

4675
/** Returns if the `OneSignal-Subscription-Id` header was added successfully. */
4776
func addPushSubscriptionIdToAdditionalHeaders() -> Bool {
77+
_ = addPushToken()
4878
if let pushSubscriptionId = OneSignalUserManagerImpl.sharedInstance.pushSubscriptionId {
4979
var additionalHeaders = self.additionalHeaders ?? [String: String]()
5080
additionalHeaders["OneSignal-Subscription-Id"] = pushSubscriptionId
@@ -54,4 +84,16 @@ internal extension OneSignalRequest {
5484
return false
5585
}
5686
}
87+
88+
/** Returns if the `Device-Auth-Push-Token` header was added successfully. */
89+
private func addPushToken() -> Bool {
90+
if let token = OneSignalUserManagerImpl.sharedInstance.pushSubscriptionModel?.address {
91+
var additionalHeaders = self.additionalHeaders ?? [String: String]()
92+
additionalHeaders["Device-Auth-Push-Token"] = "Basic \(token)"
93+
self.additionalHeaders = additionalHeaders
94+
return true
95+
} else {
96+
return false
97+
}
98+
}
5799
}

0 commit comments

Comments
 (0)