Skip to content

Commit 24654ed

Browse files
author
Kadi Kraman
authored
Merge pull request #475 from aeirola/fix-android-null-issuer-crash
Fix android crashing on null issuer
2 parents cd2ebc8 + adaccea commit 24654ed

File tree

1 file changed

+31
-13
lines changed

1 file changed

+31
-13
lines changed

android/src/main/java/com/rnappauth/RNAppAuthModule.java

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,15 @@ public void prefetchConfiguration(
9797
final CountDownLatch fetchConfigurationLatch = new CountDownLatch(1);
9898

9999
if(!isPrefetched) {
100-
if (serviceConfiguration != null && !mServiceConfigurations.containsKey(issuer)) {
100+
if (serviceConfiguration != null && !this.hasServiceConfiguration(issuer)) {
101101
try {
102-
mServiceConfigurations.put(issuer, createAuthorizationServiceConfiguration(serviceConfiguration));
102+
setServiceConfiguration(issuer, createAuthorizationServiceConfiguration(serviceConfiguration));
103103
isPrefetched = true;
104104
fetchConfigurationLatch.countDown();
105105
} catch (Exception e) {
106106
promise.reject("configuration_error", "Failed to convert serviceConfiguration", e);
107107
}
108-
} else if (!mServiceConfigurations.containsKey(issuer)) {
108+
} else if (!hasServiceConfiguration(issuer)) {
109109
final Uri issuerUri = Uri.parse(issuer);
110110
AuthorizationServiceConfiguration.fetchFromUrl(
111111
buildConfigurationUriFromIssuer(issuerUri),
@@ -117,7 +117,7 @@ public void onFetchConfigurationCompleted(
117117
promise.reject("service_configuration_fetch_error", "Failed to fetch configuration", ex);
118118
return;
119119
}
120-
mServiceConfigurations.put(issuer, fetchedConfiguration);
120+
setServiceConfiguration(issuer, fetchedConfiguration);
121121
isPrefetched = true;
122122
fetchConfigurationLatch.countDown();
123123
}
@@ -157,9 +157,9 @@ public void register(
157157
final HashMap<String, String> additionalParametersMap = MapUtil.readableMapToHashMap(additionalParameters);
158158

159159
// when serviceConfiguration is provided, we don't need to hit up the OpenID well-known id endpoint
160-
if (serviceConfiguration != null || mServiceConfigurations.containsKey(issuer)) {
160+
if (serviceConfiguration != null || hasServiceConfiguration(issuer)) {
161161
try {
162-
final AuthorizationServiceConfiguration serviceConfig = mServiceConfigurations.containsKey(issuer)? mServiceConfigurations.get(issuer) : createAuthorizationServiceConfiguration(serviceConfiguration);
162+
final AuthorizationServiceConfiguration serviceConfig = hasServiceConfiguration(issuer)? getServiceConfiguration(issuer) : createAuthorizationServiceConfiguration(serviceConfiguration);
163163
registerWithConfiguration(
164164
serviceConfig,
165165
appAuthConfiguration,
@@ -187,7 +187,7 @@ public void onFetchConfigurationCompleted(
187187
return;
188188
}
189189

190-
mServiceConfigurations.put(issuer, fetchedConfiguration);
190+
setServiceConfiguration(issuer, fetchedConfiguration);
191191

192192
registerWithConfiguration(
193193
fetchedConfiguration,
@@ -234,9 +234,9 @@ public void authorize(
234234
this.clientAuthMethod = clientAuthMethod;
235235

236236
// when serviceConfiguration is provided, we don't need to hit up the OpenID well-known id endpoint
237-
if (serviceConfiguration != null || mServiceConfigurations.containsKey(issuer)) {
237+
if (serviceConfiguration != null || hasServiceConfiguration(issuer)) {
238238
try {
239-
final AuthorizationServiceConfiguration serviceConfig = mServiceConfigurations.containsKey(issuer)? mServiceConfigurations.get(issuer) : createAuthorizationServiceConfiguration(serviceConfiguration);
239+
final AuthorizationServiceConfiguration serviceConfig = hasServiceConfiguration(issuer) ? getServiceConfiguration(issuer) : createAuthorizationServiceConfiguration(serviceConfiguration);
240240
authorizeWithConfiguration(
241241
serviceConfig,
242242
appAuthConfiguration,
@@ -264,7 +264,7 @@ public void onFetchConfigurationCompleted(
264264
return;
265265
}
266266

267-
mServiceConfigurations.put(issuer, fetchedConfiguration);
267+
setServiceConfiguration(issuer, fetchedConfiguration);
268268

269269
authorizeWithConfiguration(
270270
fetchedConfiguration,
@@ -315,9 +315,9 @@ public void refresh(
315315
this.additionalParametersMap = additionalParametersMap;
316316

317317
// when serviceConfiguration is provided, we don't need to hit up the OpenID well-known id endpoint
318-
if (serviceConfiguration != null || mServiceConfigurations.containsKey(issuer)) {
318+
if (serviceConfiguration != null || hasServiceConfiguration(issuer)) {
319319
try {
320-
final AuthorizationServiceConfiguration serviceConfig = mServiceConfigurations.containsKey(issuer) ? mServiceConfigurations.get(issuer) : createAuthorizationServiceConfiguration(serviceConfiguration);
320+
final AuthorizationServiceConfiguration serviceConfig = hasServiceConfiguration(issuer) ? getServiceConfiguration(issuer) : createAuthorizationServiceConfiguration(serviceConfiguration);
321321
refreshWithConfiguration(
322322
serviceConfig,
323323
appAuthConfiguration,
@@ -348,7 +348,7 @@ public void onFetchConfigurationCompleted(
348348
return;
349349
}
350350

351-
mServiceConfigurations.put(issuer, fetchedConfiguration);
351+
setServiceConfiguration(issuer, fetchedConfiguration);
352352

353353
refreshWithConfiguration(
354354
fetchedConfiguration,
@@ -773,6 +773,24 @@ public void onServiceDisconnected(ComponentName name) {
773773
CustomTabsClient.bindCustomTabsService(context, CUSTOM_TAB_PACKAGE_NAME, connection);
774774
}
775775

776+
private boolean hasServiceConfiguration(@Nullable String issuer) {
777+
return issuer != null && mServiceConfigurations.containsKey(issuer);
778+
}
779+
780+
private AuthorizationServiceConfiguration getServiceConfiguration(@Nullable String issuer) {
781+
if (issuer == null) {
782+
return null;
783+
} else {
784+
return mServiceConfigurations.get(issuer);
785+
}
786+
}
787+
788+
private void setServiceConfiguration(@Nullable String issuer, AuthorizationServiceConfiguration serviceConfiguration) {
789+
if (issuer != null) {
790+
mServiceConfigurations.put(issuer, serviceConfiguration);
791+
}
792+
}
793+
776794
@Override
777795
public void onNewIntent(Intent intent) {
778796

0 commit comments

Comments
 (0)