Skip to content

Commit 884b53c

Browse files
MOB-743 #comment implemented Android API
1 parent f862c19 commit 884b53c

File tree

6 files changed

+103
-19
lines changed

6 files changed

+103
-19
lines changed

README.md

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,11 @@ React Native module for Transmit Security Authentication SDK
77
```sh
88
npm install react-native-ts-authentication
99
```
10+
ios setup
1011

1112
platform :ios, 15.0
1213

13-
14-
verify these end points:
15-
export const enum BaseURL {
16-
us = "https://webauthn.identity.security/v1",
17-
eu = "https://webauthn.eu.identity.security/v1"
18-
}
19-
probably they are wrong. one taken from the github repo, another from the portal documentation.
20-
21-
ios setup
14+
add the capabilities
2215
https://developer.transmitsecurity.com/guides/webauthn/quick_start_sdk_ios/
2316

2417

android/build.gradle

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,15 +72,18 @@ android {
7272
}
7373

7474
repositories {
75-
mavenCentral()
7675
google()
76+
mavenCentral()
77+
maven {
78+
url('https://transmit.jfrog.io/artifactory/transmit-security-gradle-release-local/')
79+
}
7780
}
7881

79-
8082
dependencies {
8183
// For < 0.71, this will be from the local maven repo
8284
// For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
8385
//noinspection GradleDynamicVersion
86+
implementation("com.ts.sdk:authentication:1.0.+")
8487
implementation "com.facebook.react:react-native:+"
8588
}
8689

android/src/main/java/com/tsauthentication/TsAuthenticationModule.java

Lines changed: 82 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,23 @@
11
package com.tsauthentication;
22

3+
import static androidx.work.ListenableWorker.Result.success;
4+
35
import androidx.annotation.NonNull;
46

57
import com.facebook.react.bridge.Promise;
68
import com.facebook.react.bridge.ReactApplicationContext;
79
import com.facebook.react.bridge.ReactContextBaseJavaModule;
810
import com.facebook.react.bridge.ReactMethod;
11+
import com.facebook.react.bridge.WritableMap;
12+
import com.facebook.react.bridge.WritableNativeMap;
913
import com.facebook.react.module.annotations.ReactModule;
14+
import com.transmit.authentication.AuthenticationError;
15+
import com.transmit.authentication.AuthenticationResult;
16+
import com.transmit.authentication.RegistrationResult;
17+
import com.transmit.authentication.TSAuthCallback;
18+
import com.transmit.authentication.TSAuthentication;
19+
20+
import java.util.HashMap;
1021

1122
@ReactModule(name = TsAuthenticationModule.NAME)
1223
public class TsAuthenticationModule extends ReactContextBaseJavaModule {
@@ -22,11 +33,78 @@ public String getName() {
2233
return NAME;
2334
}
2435

36+
@ReactMethod
37+
@NonNull public void initialize(String clientId, String domain, String baseUrl, Promise promise) {
38+
TSAuthentication.init(getReactApplicationContext(),
39+
baseUrl,
40+
clientId
41+
);
42+
promise.resolve(true);
43+
}
44+
45+
// Registration
2546

26-
// Example method
27-
// See https://reactnative.dev/docs/native-modules-android
2847
@ReactMethod
29-
public void multiply(double a, double b, Promise promise) {
30-
promise.resolve(a * b);
48+
@NonNull public void register(
49+
String username,
50+
String displayName,
51+
Promise promise) {
52+
TSAuthentication.isPlatformAuthenticatorSupported(
53+
getReactApplicationContext(),
54+
new TSAuthCallback<Boolean>() {
55+
@Override
56+
public void success(Boolean aBoolean) {
57+
continueRegistration(username, displayName, promise);
58+
}
59+
60+
@Override
61+
public void error(@NonNull AuthenticationError authenticationError) {
62+
promise.reject(new Error("Unsupported platform"));
63+
}
64+
}
65+
);
66+
}
67+
private void continueRegistration(String username, String displayName, Promise promise) {
68+
TSAuthentication.register(
69+
getReactApplicationContext(),
70+
username,
71+
displayName,
72+
new TSAuthCallback<RegistrationResult>() {
73+
@Override
74+
public void success(RegistrationResult registrationResult) {
75+
WritableMap map = new WritableNativeMap();
76+
map.putString(registrationResult.result(), NAME);
77+
promise.resolve(map);
78+
}
79+
80+
@Override
81+
public void error(@NonNull AuthenticationError authenticationError) {
82+
promise.reject(NAME, authenticationError.toString());
83+
}
84+
}
85+
);
86+
}
87+
88+
// Authentication
89+
@ReactMethod
90+
@NonNull public void authenticate(String username, Promise promise) {
91+
TSAuthentication.authenticate(
92+
getReactApplicationContext(),
93+
username,
94+
new TSAuthCallback<AuthenticationResult>() {
95+
@Override
96+
public void success(AuthenticationResult authenticationResult) {
97+
WritableMap map = new WritableNativeMap();
98+
map.putString(authenticationResult.result(), NAME);
99+
promise.resolve(map);
100+
}
101+
102+
@Override
103+
public void error(@NonNull AuthenticationError authenticationError) {
104+
promise.reject(NAME, authenticationError.toString());
105+
}
106+
}
107+
);
31108
}
32109
}
110+

example/android/app/build.gradle

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,3 +121,10 @@ dependencies {
121121
}
122122

123123
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
124+
125+
repositories {
126+
google()
127+
maven {
128+
url('https://transmit.jfrog.io/artifactory/transmit-security-gradle-release-local/')
129+
}
130+
}

example/android/build.gradle

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
buildscript {
44
ext {
5-
buildToolsVersion = "33.0.0"
5+
buildToolsVersion = "34.0.0"
66
minSdkVersion = 21
7-
compileSdkVersion = 33
8-
targetSdkVersion = 33
7+
compileSdkVersion = 34
8+
targetSdkVersion = 34
99

1010
// We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.
1111
ndkVersion = "23.1.7779620"
@@ -19,3 +19,7 @@ buildscript {
1919
classpath("com.facebook.react:react-native-gradle-plugin")
2020
}
2121
}
22+
23+
repositories {
24+
google()
25+
}

ios/TsAuthentication.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,5 +76,4 @@ class TsAuthentication: NSObject {
7676
block()
7777
}
7878
}
79-
8079
}

0 commit comments

Comments
 (0)