Revert "CEC-2977 Filter portal access based on auth provider (#231)"
This reverts commit f2f046968e.
This commit is contained in:
@@ -6,12 +6,16 @@ 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 Providers = {
|
||||
FISKER: "Fisker",
|
||||
MAGNA: process.env.REACT_APP_MAGNA_PROVIDER,
|
||||
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 getGroups = (token) => {
|
||||
@@ -22,54 +26,13 @@ export const getGroups = (token) => {
|
||||
return payload["custom:groups"];
|
||||
};
|
||||
|
||||
export const getProviders = (token) => {
|
||||
const payload = parsePayload(token);
|
||||
export const hasRole = (roles, groups) => {
|
||||
if (!roles || roles.length === 0) return true;
|
||||
if (!groups) return false;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (let role of roles) {
|
||||
if (groups.indexOf(role) > -1) 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],
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,28 +1,10 @@
|
||||
import {
|
||||
getGroups,
|
||||
getProviders,
|
||||
hasRole,
|
||||
Permissions,
|
||||
Providers,
|
||||
Roles,
|
||||
} from "./roles";
|
||||
import { TEST_EXPECTED_GROUPS, TEST_TOKEN } from "./testing";
|
||||
|
||||
import { hasRoleToken, Roles } from "./roles";
|
||||
import { TEST_TOKEN } from "./testing";
|
||||
|
||||
describe("Roles Helper", () => {
|
||||
it("Check roles", () => {
|
||||
expect(
|
||||
hasRole([Roles.CREATE], Permissions.FiskerCreate, [Providers.FISKER])
|
||||
).toEqual(true);
|
||||
expect(
|
||||
hasRole([Roles.READ], Permissions.FiskerCreate, [Providers.FISKER])
|
||||
).toEqual(false);
|
||||
});
|
||||
|
||||
it("Get groups", () => {
|
||||
expect(getGroups(TEST_TOKEN)).toEqual(TEST_EXPECTED_GROUPS);
|
||||
});
|
||||
|
||||
it("Get providers", () => {
|
||||
expect(getProviders(TEST_TOKEN)).toEqual(["AzureAD"]);
|
||||
});
|
||||
expect(hasRoleToken([Roles.CREATE], TEST_TOKEN)).toEqual(true);
|
||||
expect(hasRoleToken([Roles.READ], TEST_TOKEN)).toEqual(false);
|
||||
})
|
||||
});
|
||||
|
||||
@@ -5,13 +5,5 @@ export const TEST_AUTH_OBJECT = {
|
||||
jwtToken: TEST_TOKEN,
|
||||
},
|
||||
};
|
||||
|
||||
export const TEST_TOKEN_FISKER =
|
||||
"eyJraWQiOiJlUTNuZFJLaUVcL084VUZ5RHFsYjN0S1RzWG00SzVPMlc4NXd3VWkzT2tNZz0iLCJhbGciOiJSUzI1NiJ9.eyJhdF9oYXNoIjoiODIwNTViMm9CUl9HQURiMXVyU3V3dyIsInN1YiI6ImEwZDAzMzA5LWQxYzMtNGNhZi05Zjc3LWJlMDE5N2ZlOGE1OSIsImNvZ25pdG86Z3JvdXBzIjpbInVzLXdlc3QtMl9BV3dqTFh5bTJfRmlza2VyIl0sImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tXC91cy13ZXN0LTJfQVd3akxYeW0yIiwiY29nbml0bzp1c2VybmFtZSI6ImZpc2tlcl9hdW1hcm92QGZpc2tlcmluYy5jb20iLCJnaXZlbl9uYW1lIjoiQW52YXIiLCJjdXN0b206Z3JvdXBzIjoiWzhkODI3OGE1LTljMGUtNGM3Zi05MThhLTgxMWZkMWQyMzZlNCwgNzQ2ZjM0YjAtOWJhMC00YjVkLThkODQtMDI1NmE5YzhlMzkwLCA2MDcxZWFiYS1kNjY2LTRjMDMtODE3Yi1jMjgyYTk1MWI5NjYsIGFjYmQ3MmM5LTlmZjMtNDZhOC04M2JhLWM2ZmE1ZGYzZjI2NCwgNzM3ZTQ0OWMtMjMwOS00NjllLWFhNDgtNDZlNjg5MTk4M2MwLCBmNjNiNjQzMC0xMjg4LTQwYTgtYWE0OS04NDM4NTE1MGQ2YTgsIDg3NzcwYWVhLTkxNjItNDA5ZS1hYTcwLTEwZDBkMWRlNTkwMiwgYTZjOTgwNWUtODBiMi00MmIyLWJmYmItOWRmNTJlNTUwNGQ4LCBiYWZjMTdhNy1lYzY0LTQ5ZDktYTJhNy1kYWZjMjhkY2IwMzcsIDI0NDljMDY2LTkxNDYtNDRhNy1iNGU2LTQ4MjgwMzFkOTU4ZCwgZWZjYzMwMjUtZTJkOC00MjEyLTgyMjctODA1YzdiZTM5ZDJjLCAyNzNjN2MwZC01MWQzLTRhMzEtOTQ0My1jNDM2NzU3MmVlNGYsIDcwZmU1OWM2LTFkNjktNGRmZS05N2I5LWZhZTQzMjE1MTAxOSwgODY5NTZhMmYtOGQ0Ni00N2ZmLTliMjktZjk5MDc5YWUzYzFkLCBiMGU4MmU4My0yYzk0LTRiMjQtYjljNy1lNzc4MTZmMjU5N2RdIiwiYXVkIjoiN2NrMnRmb3FhdmM3MmM0NWhoN3RnZTQya2QiLCJjdXN0b206c2Vzc2lvbi1kdXJhdGlvbiI6IjkwMCIsImlkZW50aXRpZXMiOlt7InVzZXJJZCI6ImF1bWFyb3ZAZmlza2VyaW5jLmNvbSIsInByb3ZpZGVyTmFtZSI6IkZpc2tlciIsInByb3ZpZGVyVHlwZSI6IlNBTUwiLCJpc3N1ZXIiOiJodHRwczpcL1wvc3RzLndpbmRvd3MubmV0XC81YWE0YjY0MC1jOWZjLTRhOWItYjNhMy1kNGE3ZDAwOGZiNWVcLyIsInByaW1hcnkiOiJ0cnVlIiwiZGF0ZUNyZWF0ZWQiOiIxNjY0ODA3MDE1NzQ3In1dLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY2Nzc1NjIzOCwiZXhwIjoxNjY3NzU5ODM4LCJpYXQiOjE2Njc3NTYyMzgsImZhbWlseV9uYW1lIjoiVW1hcm92IiwiZW1haWwiOiJhdW1hcm92QGZpc2tlcmluYy5jb20ifQ.ZZC7tgMMjRpRNJcGdp7ftXJQJ6pjzP45SJAcfJRZC4oUHG-h5BI1bGKEKmslWdK09GEH1cN7YDGQg8ufkKOyncm-J5DRNvj27fN--Lapkg1Q0bHT8pwMDXRjPUbazLEwEvfo1yGyLBOBopxdisQvv9km8-UH3Xy7a7IsCOWx51xKsgMWho4w4BK1PQUBpUrG0h-tno7-7nHO4gwr4urCtDPIoMjsq_lF77LDvM3SBdCH28ogaoDE3ogd1tbBpwHXtOhnp-FMp85I2Vk-pI_KsiW3RXr50OdeAVEfFLFKhjCCoB5RR6pKxWJXs-7BN91Tnn7SYgfAWt5Wa2cxBxMUDg"
|
||||
export const TEST_AUTH_OBJECT_FISKER = {
|
||||
idToken: {
|
||||
jwtToken: TEST_TOKEN_FISKER
|
||||
},
|
||||
}
|
||||
export const TEST_EXPECTED_GROUPS =
|
||||
"[2914e67f-fb85-4b78-b79d-656f4f37faa1, 8d8278a5-9c0e-4c7f-918a-811fd1d236e4, 746f34b0-9ba0-4b5d-8d84-0256a9c8e390, 6c3cf98d-0ada-48c6-ae94-b171cfa275fc, acbd72c9-9ff3-46a8-83ba-c6fa5df3f264, 5e59a619-c890-4472-91c2-d5eae5d8fa18, 56ef4bec-d739-4ddf-a003-ecc813085b8d, 929b0470-f7eb-4e18-9f97-22ac2c591a10, 131e6257-fdb7-426a-9825-1cd918802fba, 1ac794cc-76ac-47f6-bee6-d6666998f0fd, 87770aea-9162-409e-aa70-10d0d1de5902, 5dea6c32-6575-4527-9254-e50d27ae5e92, bafc17a7-ec64-49d9-a2a7-dafc28dcb037, 2449c066-9146-44a7-b4e6-4828031d958d, efcc3025-e2d8-4212-8227-805c7be39d2c, 8f78dce7-f5f9-4033-a10c-c9c7408bfcfe, cf653183-c829-4eed-a6ce-453fa1017cd9, 783c5979-f5e7-4cb6-b14e-c3553dde956a, 5515a98f-4668-4121-8e8d-fee2825699cf, 86956a2f-8d46-47ff-9b29-f99079ae3c1d, c4d4361c-8882-47b4-8641-fd3ab68ae722, 972ad095-16b7-40ad-a464-f5dbf417a8cd, 7bcdcdb2-3279-44bf-a998-771bab4b33e1]";
|
||||
|
||||
Reference in New Issue
Block a user