CEC-3119 Magna access (#235)

* CEC-3119 Magna access

* Clean up

* Update test provider
This commit is contained in:
John Wu
2022-11-14 13:30:57 -08:00
committed by GitHub
parent 33bfc4fb13
commit b7e13382c4
76 changed files with 1316 additions and 918 deletions

View File

@@ -6,16 +6,12 @@ export const Roles = {
DELETE: "8f78dce7-f5f9-4033-a10c-c9c7408bfcfe",
CERTIFICATES: "746f34b0-9ba0-4b5d-8d84-0256a9c8e390",
APPROVESUPPLIERS: "a6c9805e-80b2-42b2-bfbb-9df52e5504d8",
MAGNAGROUP: process.env.REACT_APP_MAGNA_GROUP_ID,
};
export const hasRoleToken = (roles, token) => {
if (!roles || roles.length === 0) return true;
const groups = getGroups(token);
if (!groups) return false;
return hasRole(roles, groups);
export const Providers = {
FISKER: "Fisker",
MAGNA: process.env.REACT_APP_MAGNA_PROVIDER,
};
export const getGroups = (token) => {
@@ -26,13 +22,54 @@ export const getGroups = (token) => {
return payload["custom:groups"];
};
export const hasRole = (roles, groups) => {
if (!roles || roles.length === 0) return true;
if (!groups) return false;
export const getProviders = (token) => {
const payload = parsePayload(token);
for (let role of roles) {
if (groups.indexOf(role) > -1) return true;
if (!payload || !payload["identities"] || payload["identities"].length === 0)
return null;
return payload["identities"].map((identity) => identity["providerName"]);
};
export const hasRole = (userGroups, rolesPerProvider, userProviders) => {
if (!rolesPerProvider || rolesPerProvider.length === 0) return true;
if (!userGroups || userGroups.length === 0) return false;
if (rolesPerProvider && userProviders) {
for (const provider of userProviders) {
if (rolesPerProvider[provider]) {
const rolesForProvider = rolesPerProvider[provider];
if (!rolesForProvider || rolesForProvider.length === 0) return true;
if (
rolesForProvider.filter((role) => userGroups.includes(role)).length >
0
) {
return true;
}
}
}
}
return false;
};
export const Permissions = {
FiskerRead: { [Providers.FISKER]: [Roles.CREATE, Roles.READ] },
FiskerCreate: { [Providers.FISKER]: [Roles.CREATE] },
FiskerDelete: { [Providers.FISKER]: [Roles.DELETE] },
FiskerSupplierAdmin: { [Providers.FISKER]: [Roles.APPROVESUPPLIERS] },
FiskerCertificate: { [Providers.FISKER]: [Roles.CERTIFICATES] },
FiskerTools: {
[Providers.FISKER]: [Roles.APPROVESUPPLIERS, Roles.CERTIFICATES],
},
Magna: { [Providers.MAGNA]: [Roles.MAGNAGROUP] },
FiskerMagnaRead: {
[Providers.FISKER]: [Roles.CREATE, Roles.READ],
[Providers.MAGNA]: [Roles.MAGNAGROUP],
},
FiskerMagnaCreate: {
[Providers.FISKER]: [Roles.CREATE],
[Providers.MAGNA]: [Roles.MAGNAGROUP],
},
};