react-native-ad-azure-auth
Version:
An React Native module implements Azure AD V2.0 authentication flow
47 lines (43 loc) • 1.68 kB
JavaScript
import {
NativeModules,
Linking,
Platform
} from 'react-native'
export default class Agent {
openWeb(url, ephemeralSession = false, closeOnLoad = false, headers = null) {
if (!NativeModules.AzureAuth) {
return Promise.reject(new Error('Missing NativeModule. Please make sure you run `react-native link react-native-ad-azure-auth`'))
}
return new Promise((resolve, reject) => {
const urlHandler = (event) => {
NativeModules.AzureAuth.hide()
Linking.removeAllListeners('url')
resolve(event.url)
}
const params = Platform.OS === 'ios' ? [ephemeralSession, closeOnLoad, headers] : [closeOnLoad, headers]
console.log("params", params)
Linking.addEventListener('url', urlHandler)
NativeModules.AzureAuth.showUrl(url, ...params, (err, redirectURL) => {
Linking.removeAllListeners('url')
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 react-native-ad-azure-auth`'))
}
/* eslint no-unused-vars:0 */
return new Promise((resolve, reject) => {
NativeModules.AzureAuth.oauthParameters((parameters) => {
resolve(parameters)
})
})
}
}