@@ -34,17 +34,47 @@ protocol OSUserRequest: OneSignalRequest, NSCoding {
3434}
3535
3636internal 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