@code_district/doorman
Version:
Doorman: A comprehensive React package for seamless authentication and authorization management. Easily integrate secure user authentication and access control in your applications. Streamline user verification, role-based permissions, and secure data han
56 lines (44 loc) • 1.33 kB
JavaScript
import axios from "axios";
import { CognitoUserPool } from "amazon-cognito-identity-js";
import Singleton from "../../singleton/singleton";
export const DoormanInitializeUser = async () => {
var instance = Singleton.getInstance();
const userPool = new CognitoUserPool({
UserPoolId: instance?.configuration?.userPoolId,
ClientId: instance?.configuration?.clientId,
});
const cognitoUser = userPool.getCurrentUser();
let idToken;
cognitoUser?.getSession(function (err, session) {
if (err) {
console.error("Error getting session: ", err);
return;
}
idToken = session?.idToken?.jwtToken;
});
let response;
if (idToken) {
await axios
.get(
`${instance?.configuration?.apiGatewayUrl}/user/public/get-user-permission-tenant`,
{
headers: {
Authorization: `Bearer ${idToken}`,
},
}
)
.then((res) => {
response = res;
})
.catch((err) => {
console.error("Error: ", err);
});
}
const flatPermissions = response?.data?.role?.flatMap(
(role) => role.permission
);
const permissions = Array.from(new Set(flatPermissions));
instance.configuration.userPermissions = permissions;
instance.configuration.tenantInfo = response.data.tenant;
return permissions;
};