diff --git a/FronteggRN.podspec b/FronteggRN.podspec
index 31bcf22..fa20879 100644
--- a/FronteggRN.podspec
+++ b/FronteggRN.podspec
@@ -20,10 +20,10 @@ Pod::Spec.new do |s|
# See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
if respond_to?(:install_modules_dependencies, true)
install_modules_dependencies(s)
- s.dependency "FronteggSwift", "1.2.26"
+ s.dependency "FronteggSwift", "1.2.31"
else
s.dependency "React-Core"
- s.dependency "FronteggSwift", "1.2.26"
+ s.dependency "FronteggSwift", "1.2.31"
# Don't install the dependencies when we run `pod install` in the old architecture.
if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
diff --git a/android/build.gradle b/android/build.gradle
index 64552c2..0885c36 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -77,7 +77,7 @@ dependencies {
implementation "androidx.browser:browser:1.8.0"
implementation 'io.reactivex.rxjava3:rxkotlin:3.0.1'
implementation 'com.google.code.gson:gson:2.10.1'
- implementation 'com.frontegg.sdk:android:1.2.30'
+ implementation 'com.frontegg.sdk:android:1.2.33'
}
if (isNewArchitectureEnabled()) {
diff --git a/android/src/main/java/com/frontegg/reactnative/FronteggRNModule.kt b/android/src/main/java/com/frontegg/reactnative/FronteggRNModule.kt
index 45f689e..ba2331b 100644
--- a/android/src/main/java/com/frontegg/reactnative/FronteggRNModule.kt
+++ b/android/src/main/java/com/frontegg/reactnative/FronteggRNModule.kt
@@ -165,6 +165,26 @@ class FronteggRNModule(val reactContext: ReactApplicationContext) :
}
}
+ @ReactMethod
+ fun requestAuthorize(refreshToken: String, deviceTokenCookie: String?, promise: Promise) {
+ try {
+ FronteggAuth.instance.requestAuthorize(refreshToken, deviceTokenCookie) { result ->
+ result.fold(
+ onSuccess = { user ->
+ promise.resolve(user.toReadableMap())
+ },
+ onFailure = { error ->
+ promise.reject("AUTHORIZATION_ERROR", error.message, error)
+ }
+ )
+ }
+ } catch (e: Exception) {
+ promise.reject("EXCEPTION", e.message, e)
+ }
+ }
+
+
+
@ReactMethod
fun registerPasskeys(promise: Promise) {
val activity = currentActivity
diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock
index 56b78e7..18f5d06 100644
--- a/example/ios/Podfile.lock
+++ b/example/ios/Podfile.lock
@@ -11,10 +11,10 @@ PODS:
- ReactCommon/turbomodule/core (= 0.72.1)
- fmt (6.2.1)
- FronteggRN (1.2.8):
- - FronteggSwift (= 1.2.26)
+ - FronteggSwift (= 1.2.31)
- RCT-Folly (= 2021.07.22.00)
- React-Core
- - FronteggSwift (1.2.26)
+ - FronteggSwift (1.2.31)
- glog (0.3.5)
- hermes-engine (0.72.1):
- hermes-engine/Pre-built (= 0.72.1)
@@ -584,8 +584,8 @@ SPEC CHECKSUMS:
FBLazyVector: 55cd4593d570bd9e5e227488d637ce6a9581ce51
FBReactNativeSpec: 799b0e1a1561699cd0e424e24fe5624da38402f0
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
- FronteggRN: 7adf3791e2a25fa246ea41a5e692f308ccf81539
- FronteggSwift: a92b852ed3721627dcbef0dfc985380c0fa4eb60
+ FronteggRN: 3d200dc4972c49321233ec609ac8a391e7323024
+ FronteggSwift: fe65e3758373aae89361d30aa3c5ec9b5d96fc18
glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b
hermes-engine: 9df83855a0fd15ef8eb61694652bae636b0c466e
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
diff --git a/example/src/HomeScreen.tsx b/example/src/HomeScreen.tsx
index d5aacaf..5551479 100644
--- a/example/src/HomeScreen.tsx
+++ b/example/src/HomeScreen.tsx
@@ -10,6 +10,7 @@ import {
directLoginAction,
registerPasskeys,
loginWithPasskeys,
+ requestAuthorize,
} from '@frontegg/react-native';
import { useState } from 'react';
import type { ITenantsResponse } from '@frontegg/rest-api';
@@ -57,6 +58,22 @@ export default function HomeScreen() {
/>
)}
+
+
{state.isAuthenticated ? (
diff --git a/ios/FronteggRN.m b/ios/FronteggRN.m
index 7b92642..689d4f9 100644
--- a/ios/FronteggRN.m
+++ b/ios/FronteggRN.m
@@ -37,4 +37,10 @@ @interface RCT_EXTERN_MODULE(FronteggRN, RCTEventEmitter)
registerPasskeys: (RCTPromiseResolveBlock)resolve
rejecter: (RCTPromiseRejectBlock)reject
)
+RCT_EXTERN_METHOD(
+ requestAuthorize: (NSString *)refreshToken
+ deviceTokenCookie: (nullable NSString *)deviceTokenCookie
+ resolver: (RCTPromiseResolveBlock)resolve
+ rejecter: (RCTPromiseRejectBlock)reject
+ )
@end
diff --git a/ios/FronteggRN.swift b/ios/FronteggRN.swift
index 99e0e88..7909d11 100644
--- a/ios/FronteggRN.swift
+++ b/ios/FronteggRN.swift
@@ -185,6 +185,29 @@ class FronteggRN: RCTEventEmitter {
}
fronteggApp.auth.loginWithPasskeys(completion)
}
+
+ @objc
+ func requestAuthorize(
+ _ refreshToken: String,
+ deviceTokenCookie: String?,
+ resolver: @escaping RCTPromiseResolveBlock,
+ rejecter: @escaping RCTPromiseRejectBlock
+ ) {
+ fronteggApp.auth.requestAuthorize(refreshToken: refreshToken, deviceTokenCookie: deviceTokenCookie) { result in
+ switch result {
+ case .success(let user):
+ if let userData = try? JSONEncoder().encode(user),
+ let jsonUser = try? JSONSerialization.jsonObject(with: userData, options: .allowFragments) as? [String: Any] {
+ resolver(jsonUser)
+ } else {
+ resolver(nil)
+ }
+ case .failure(let error):
+ rejecter("AUTHORIZATION_ERROR", error.localizedDescription, error)
+ }
+ }
+ }
+
@objc
func registerPasskeys(_ resolve: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) -> Void {
diff --git a/src/FronteggNative.ts b/src/FronteggNative.ts
index 750208f..c257bc2 100644
--- a/src/FronteggNative.ts
+++ b/src/FronteggNative.ts
@@ -55,6 +55,13 @@ export async function loginWithPasskeys(): Promise {
return FronteggRN.loginWithPasskeys();
}
+export async function requestAuthorize(
+ refreshToken: string,
+ deviceTokenCookie?: string
+) {
+ return await FronteggRN.requestAuthorize(refreshToken, deviceTokenCookie);
+}
+
export async function registerPasskeys(): Promise {
return FronteggRN.registerPasskeys();
}
diff --git a/src/index.tsx b/src/index.tsx
index 77b240d..79be63d 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -10,4 +10,5 @@ export {
refreshToken,
loginWithPasskeys,
registerPasskeys,
+ requestAuthorize,
} from './FronteggNative';