@brightlayer-ui/react-native-auth-workflow
Version:
Re-usable workflow components for Authentication and Registration within Eaton applications.
49 lines (48 loc) • 3.4 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import React, { useEffect } from 'react';
import { OktaRedirectLoginScreenBase } from './OktaRedirectLoginScreenBase';
import { useOktaAuthContext } from '../../contexts';
import { useTranslation } from 'react-i18next';
import { createConfig, EventEmitter, signInWithBrowser } from '@okta/okta-react-native';
/**
* Component that renders a okta login screen that prompts a user to redirect to okta login sign in page.
*
* @param {OktaLoginScreenProps} props - Props of okta Login Screen component
*
* @category Component
*/
export const OktaRedirectLoginScreen = (props) => {
const { t } = useTranslation();
const { navigate, routeConfig } = useOktaAuthContext();
const { loginButtonLabel = t('bluiCommon:ACTIONS.OKTA_SIGN_IN'), showForgotPassword = true, forgotPasswordLabel = t('bluiCommon:LABELS.FORGOT_PASSWORD'), onForgotPassword = () => navigate(routeConfig.FORGOT_PASSWORD), showSelfRegistration = true, selfRegisterInstructions = t('bluiCommon:LABELS.NEED_ACCOUNT'), selfRegisterButtonLabel = t('bluiCommon:ACTIONS.CREATE_ACCOUNT'), onSelfRegister = () => navigate(routeConfig.REGISTER_SELF), showContactSupport = true, contactSupportLabel = t('bluiCommon:MESSAGES.CONTACT'), onContactSupport = () => navigate(routeConfig.SUPPORT), showCyberSecurityBadge = true, projectImage, header, footer, cyberSecurityBadgeSize, oktaConfigObject, } = props;
const onLogin = () => __awaiter(void 0, void 0, void 0, function* () {
try {
yield signInWithBrowser();
EventEmitter.emit('signInSuccess');
}
catch (_error) {
// eslint-disable-next-line no-console
console.log(_error);
}
});
const createOktaConfig = () => __awaiter(void 0, void 0, void 0, function* () {
if (oktaConfigObject) {
yield createConfig(oktaConfigObject);
}
else {
console.error('Okta config object is undefined');
}
});
useEffect(() => {
void createOktaConfig();
}, []);
return (React.createElement(OktaRedirectLoginScreenBase, { loginButtonLabel: loginButtonLabel, onLogin: onLogin, showForgotPassword: showForgotPassword, forgotPasswordLabel: forgotPasswordLabel, onForgotPassword: onForgotPassword, showSelfRegistration: showSelfRegistration, selfRegisterButtonLabel: selfRegisterButtonLabel, selfRegisterInstructions: selfRegisterInstructions, onSelfRegister: onSelfRegister, showContactSupport: showContactSupport, contactSupportLabel: contactSupportLabel, onContactSupport: onContactSupport, showCyberSecurityBadge: showCyberSecurityBadge, projectImage: projectImage, header: header, footer: footer, cyberSecurityBadgeSize: cyberSecurityBadgeSize }));
};