Core package for one profile application
yarn
yarn add @one-profile/core
npm
npm install @one-profile/core
oneProfileSetup
is the bootstrap API that will help you to expose your application/parcel to OneProfile ecosystem
import React from "react";
import Root from "./root.component";
import { oneProfileSetup } from "@one-profile/core";
const profileSetup = oneProfileSetup(Root);
export const { bootstrap, mount, unmount, config } = profileSetup;
rootComponent: React.FunctionComponent<any>
React root functional component that is mounted into OneProfile
config: OneProfileSetupConfig
(optional)
-
activationFn: Promise<boolean>
A function that decides whether to activate the current application. Expected to return a promise of boolean to be used in one profile initialisation. Function acceptsaccessToken
and current user's oauthclaim
details
import {UserClaims} from "@okta/okta-auth-js";
import {User} from "@one-profile/core";
function activateProfile(accessToken, currentUser: User & UserClaims) {
return new Promise<boolean>((resolve) =>
makeSomeExternalCall(accessToken, currentUser).then((result) => {
if (result == "success" && currentUser.homeOffice.countryIsoCode == "IND") {
resolve(true);
} else {
resolve(false);
}
})
);
}
//...
//...
//some business logic in between
//...
//...
const profileSetup = oneProfileSetup(Root, {
activationFn: activateProfile,
});
users.getMe
is the users API that will expose current logged-in user
import React from "react";
import { oneProfileSetup, users } from "@one-profile/core";
function someFunctionRequireCurrentUser(){
// get access token either using context or props from root component
users.getMe(accessToken).then((user:User) => {
// user data
});
}
accessToken
(required)
accessToken used to authorise the getUser API request
User
{
name: string;
email: string;
grade: {
name: string;
}
role: {
name: string;
}
department: {
id: string;
name: string;
}
homeOffice: {
name: string;
countryIsoCode: string;
country: string;
locationCode: string;
}
workingOffice: {
name: string;
countryIsoCode: string;
country: string;
locationCode: string;
};
}
error data
(refer ResponseError)
{
message: string;
}
Response Error is thrown which can be caught in the API's promise catch mechanism
Usage:
import { ResponseError } from "@one-profile/core";
api.then(console.log).catch((error: ResponseError) => {
if (error.status == 404) {
//404 or 500
console.log(error.data);
}
});
Make sure you include the following line in jest setup. Make sure you install regenerator-runtime
package
import 'regenerator-runtime/runtime';