UNPKG

azure-ad-auth-react-native

Version:

An React Native module implements Azure AD V2.0 authentication flow

46 lines (42 loc) 1.63 kB
import { NativeModules, Linking, Platform } from 'react-native' export default class Agent { openWeb(url, ephemeralSession = false, closeOnLoad = false) { if (!NativeModules.AzureAuth) { return Promise.reject(new Error('Missing NativeModule. Please make sure you run `react-native link azure-ad-auth-react-native`')) } return new Promise((resolve, reject) => { const urlHandler = (event) => { NativeModules.AzureAuth.hide() Linking.removeEventListener('url', urlHandler) resolve(event.url) } const params = Platform.OS === 'ios' ? [ephemeralSession, closeOnLoad] : [closeOnLoad] Linking.addEventListener('url', urlHandler) NativeModules.AzureAuth.showUrl(url, ...params, (err, redirectURL) => { Linking.removeEventListener('url', urlHandler) if (err) { reject(err) } else if(redirectURL) { resolve(redirectURL) } else if (closeOnLoad) { resolve() } }) }) } generateRequestParams() { if (!NativeModules.AzureAuth) { return Promise.reject(new Error('Missing NativeModule. Please make sure you run `react-native link azure-ad-auth-react-native`')) } /* eslint no-unused-vars:0 */ return new Promise((resolve, reject) => { NativeModules.AzureAuth.oauthParameters((parameters) => { resolve(parameters) }) }) } }