Skip to content

Commit 7cfa79a

Browse files
committed
Add jwt in some backend services and operation executors
1 parent fa89690 commit 7cfa79a

21 files changed

+81
-134
lines changed

Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/application/MainApplication.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
import androidx.annotation.Nullable;
88
import androidx.multidex.MultiDexApplication;
99

10+
import com.onesignal.IUserJwtInvalidatedListener;
1011
import com.onesignal.OneSignal;
12+
import com.onesignal.UserJwtInvalidatedEvent;
1113
import com.onesignal.inAppMessages.IInAppMessageClickListener;
1214
import com.onesignal.inAppMessages.IInAppMessageClickEvent;
1315
import com.onesignal.inAppMessages.IInAppMessageDidDismissEvent;
@@ -126,6 +128,13 @@ public void onUserStateChange(@NonNull UserChangedState state) {
126128
}
127129
});
128130

131+
OneSignal.addUserJwtInvalidatedListner(new IUserJwtInvalidatedListener() {
132+
@Override
133+
public void onUserJwtInvalidated(@NonNull UserJwtInvalidatedEvent event) {
134+
Log.v(Tag.LOG_TAG, "onUserJwtInvalidated fired with ID:" + event.getExternal_id());
135+
}
136+
});
137+
129138
OneSignal.getInAppMessages().setPaused(true);
130139
OneSignal.getLocation().setShared(false);
131140

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/http/IHttpClient.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ interface IHttpClient {
1818
suspend fun post(
1919
url: String,
2020
body: JSONObject,
21+
jwt: String? = null
2122
): HttpResponse
2223

2324
/**
@@ -34,6 +35,7 @@ interface IHttpClient {
3435
suspend fun get(
3536
url: String,
3637
cacheKey: String? = null,
38+
jwt: String? = null
3739
): HttpResponse
3840

3941
/**
@@ -47,6 +49,7 @@ interface IHttpClient {
4749
suspend fun put(
4850
url: String,
4951
body: JSONObject,
52+
jwt: String? = null
5053
): HttpResponse
5154

5255
/**
@@ -60,6 +63,7 @@ interface IHttpClient {
6063
suspend fun patch(
6164
url: String,
6265
body: JSONObject,
66+
jwt: String? = null
6367
): HttpResponse
6468

6569
/**
@@ -69,7 +73,10 @@ interface IHttpClient {
6973
*
7074
* @return The response returned.
7175
*/
72-
suspend fun delete(url: String): HttpResponse
76+
suspend fun delete(
77+
url: String,
78+
jwt: String? = null
79+
): HttpResponse
7380
}
7481

7582
/**

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/http/impl/HttpClient.kt

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,33 +33,40 @@ internal class HttpClient(
3333
override suspend fun post(
3434
url: String,
3535
body: JSONObject,
36+
jwt: String?,
3637
): HttpResponse {
37-
return makeRequest(url, "POST", body, _configModelStore.model.httpTimeout, null)
38+
return makeRequest(url, "POST", body, _configModelStore.model.httpTimeout, null, jwt)
3839
}
3940

4041
override suspend fun get(
4142
url: String,
4243
cacheKey: String?,
44+
jwt: String?,
4345
): HttpResponse {
44-
return makeRequest(url, null, null, _configModelStore.model.httpGetTimeout, cacheKey)
46+
return makeRequest(url, null, null, _configModelStore.model.httpGetTimeout, cacheKey, jwt)
4547
}
4648

4749
override suspend fun put(
4850
url: String,
4951
body: JSONObject,
52+
jwt: String?,
5053
): HttpResponse {
51-
return makeRequest(url, "PUT", body, _configModelStore.model.httpTimeout, null)
54+
return makeRequest(url, "PUT", body, _configModelStore.model.httpTimeout, null, jwt)
5255
}
5356

5457
override suspend fun patch(
5558
url: String,
5659
body: JSONObject,
60+
jwt: String?,
5761
): HttpResponse {
58-
return makeRequest(url, "PATCH", body, _configModelStore.model.httpTimeout, null)
62+
return makeRequest(url, "PATCH", body, _configModelStore.model.httpTimeout, null, jwt)
5963
}
6064

61-
override suspend fun delete(url: String): HttpResponse {
62-
return makeRequest(url, "DELETE", null, _configModelStore.model.httpTimeout, null)
65+
override suspend fun delete(
66+
url: String,
67+
jwt: String?,
68+
): HttpResponse {
69+
return makeRequest(url, "DELETE", null, _configModelStore.model.httpTimeout, null, jwt)
6370
}
6471

6572
private suspend fun makeRequest(
@@ -68,6 +75,7 @@ internal class HttpClient(
6875
jsonBody: JSONObject?,
6976
timeout: Int,
7077
cacheKey: String?,
78+
jwt: String? = null
7179
): HttpResponse {
7280
// If privacy consent is required but not yet given, any non-GET request should be blocked.
7381
if (method != null && _configModelStore.model.consentRequired == true && _configModelStore.model.consentGiven != true) {
@@ -79,7 +87,7 @@ internal class HttpClient(
7987

8088
try {
8189
return withTimeout(getThreadTimeout(timeout).toLong()) {
82-
return@withTimeout makeRequestIODispatcher(url, method, jsonBody, timeout, cacheKey)
90+
return@withTimeout makeRequestIODispatcher(url, method, jsonBody, timeout, cacheKey, jwt)
8391
}
8492
} catch (e: TimeoutCancellationException) {
8593
Logging.error("HttpClient: Request timed out: $url", e)
@@ -96,6 +104,7 @@ internal class HttpClient(
96104
jsonBody: JSONObject?,
97105
timeout: Int,
98106
cacheKey: String?,
107+
jwt: String? = null
99108
): HttpResponse {
100109
var retVal: HttpResponse? = null
101110

@@ -126,6 +135,10 @@ internal class HttpClient(
126135
con.readTimeout = timeout
127136
con.setRequestProperty("SDK-Version", "onesignal/android/" + OneSignalUtils.SDK_VERSION)
128137

138+
if (jwt != null) {
139+
con.setRequestProperty("Authentication", jwt)
140+
}
141+
129142
if (OneSignalWrapper.sdkType != null && OneSignalWrapper.sdkVersion != null) {
130143
con.setRequestProperty("SDK-Wrapper", "onesignal/${OneSignalWrapper.sdkType}/${OneSignalWrapper.sdkVersion}")
131144
}

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/operations/results/IOperationResult.kt

Lines changed: 0 additions & 44 deletions
This file was deleted.

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/operations/results/impl/OperationResultFailed.kt

Lines changed: 0 additions & 11 deletions
This file was deleted.

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/operations/results/impl/OperationResultRetrying.kt

Lines changed: 0 additions & 14 deletions
This file was deleted.

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/operations/results/impl/OperationResultSuccessful.kt

Lines changed: 0 additions & 4 deletions
This file was deleted.

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/internal/OneSignalImp.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -448,8 +448,11 @@ internal class OneSignalImp : IOneSignal, IServiceProvider {
448448
}
449449

450450
override fun updateUserJwt(externalId: String, token: String) {
451-
if (identityModelStore!!.model.externalId.equals(externalId))
452-
identityModelStore!!.model.jwtToken = token;
451+
if (!identityModelStore!!.model.externalId.equals(externalId))
452+
return
453+
454+
identityModelStore!!.model.jwtToken = token
455+
// TODO: update OperationRepo with new JWT
453456
}
454457

455458
override fun addUserJwtInvalidatedListner(listener: IUserJwtInvalidatedListener) {

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/user/IUserManager.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,6 @@ interface IUserManager {
4040
*/
4141
val externalId: String
4242

43-
/**
44-
* A JWT token generated on your server and given to a OneSignal Client SDK so it can manage
45-
* a specific User, their Subscriptions, and Identities (AKA add/remove Aliases).
46-
*/
47-
val jwtToken: String
48-
4943
/**
5044
* Set the 2-character language either as a detected language or explicitly set for this user. See
5145
* See [Supported Languages | OneSignal](https://documentation.onesignal.com/docs/language-localization#what-languages-are-supported)

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/user/internal/UserManager.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.onesignal.user.internal
22

33
import com.onesignal.IUserJwtInvalidatedListener
4+
import com.onesignal.OneSignal
45
import com.onesignal.UserJwtInvalidatedEvent
56
import com.onesignal.common.IDManager
67
import com.onesignal.common.OneSignalUtils
@@ -35,9 +36,6 @@ internal open class UserManager(
3536
override val externalId: String
3637
get() = _identityModel.externalId ?: ""
3738

38-
override val jwtToken: String
39-
get() = _identityModel.jwtToken ?: ""
40-
4139
val aliases: Map<String, String>
4240
get() = _identityModel.filter { it.key != IdentityModel::id.name }.toMap()
4341

@@ -279,7 +277,9 @@ internal open class UserManager(
279277
}
280278
IdentityConstants.JWT_TOKEN -> {
281279
// Fire the event when the JWT has been invalidated.
282-
if (args.newValue == null) {
280+
val oldJwt = args.oldValue.toString()
281+
val newJwt = args.newValue.toString()
282+
if (OneSignal.isIdentityVerificationEnabled && oldJwt == newJwt && newJwt.isBlank()) {
283283
jwtInvalidatedCallback.fire {
284284
it.onUserJwtInvalidated(UserJwtInvalidatedEvent((externalId)))
285285
}

0 commit comments

Comments
 (0)