angular-auth-oidc-client
Version:
Angular Lib for OpenID Connect & OAuth2
34 lines • 4.61 kB
JavaScript
import { POSITIVE_VALIDATION_RESULT } from '../rule';
const createIdentifierToCheck = (passedConfig) => {
if (!passedConfig) {
return '';
}
const { authority, clientId, scope } = passedConfig;
return `${authority}${clientId}${scope}`;
};
const arrayHasDuplicates = (array) => new Set(array).size !== array.length;
export const ensureNoDuplicatedConfigsRule = (passedConfigs) => {
const allIdentifiers = passedConfigs.map((x) => createIdentifierToCheck(x));
const someAreNotSet = allIdentifiers.some((x) => x === '');
if (someAreNotSet) {
return {
result: false,
messages: [
`Please make sure you add an object with a 'config' property: ....({ config }) instead of ...(config)`,
],
level: 'error',
};
}
const hasDuplicates = arrayHasDuplicates(allIdentifiers);
if (hasDuplicates) {
return {
result: false,
messages: [
'You added multiple configs with the same authority, clientId and scope',
],
level: 'warning',
};
}
return POSITIVE_VALIDATION_RESULT;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5zdXJlLW5vLWR1cGxpY2F0ZWQtY29uZmlncy5ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy9saWIvY29uZmlnL3ZhbGlkYXRpb24vcnVsZXMvZW5zdXJlLW5vLWR1cGxpY2F0ZWQtY29uZmlncy5ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSwwQkFBMEIsRUFBd0IsTUFBTSxTQUFTLENBQUM7QUFFM0UsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLFlBQWlDLEVBQVUsRUFBRTtJQUM1RSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsWUFBWSxDQUFDO0lBRXBELE9BQU8sR0FBRyxTQUFTLEdBQUcsUUFBUSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQzNDLENBQUMsQ0FBQztBQUVGLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFlLEVBQVcsRUFBRSxDQUN0RCxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUV2QyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxDQUMzQyxhQUFvQyxFQUNkLEVBQUU7SUFDeEIsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU1RSxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFFM0QsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQixPQUFPO1lBQ0wsTUFBTSxFQUFFLEtBQUs7WUFDYixRQUFRLEVBQUU7Z0JBQ1Isc0dBQXNHO2FBQ3ZHO1lBQ0QsS0FBSyxFQUFFLE9BQU87U0FDZixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRXpELElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsT0FBTztZQUNMLE1BQU0sRUFBRSxLQUFLO1lBQ2IsUUFBUSxFQUFFO2dCQUNSLHdFQUF3RTthQUN6RTtZQUNELEtBQUssRUFBRSxTQUFTO1NBQ2pCLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTywwQkFBMEIsQ0FBQztBQUNwQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGVuSWRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vb3BlbmlkLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgUE9TSVRJVkVfVkFMSURBVElPTl9SRVNVTFQsIFJ1bGVWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnLi4vcnVsZSc7XG5cbmNvbnN0IGNyZWF0ZUlkZW50aWZpZXJUb0NoZWNrID0gKHBhc3NlZENvbmZpZzogT3BlbklkQ29uZmlndXJhdGlvbik6IHN0cmluZyA9PiB7XG4gIGlmICghcGFzc2VkQ29uZmlnKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3QgeyBhdXRob3JpdHksIGNsaWVudElkLCBzY29wZSB9ID0gcGFzc2VkQ29uZmlnO1xuXG4gIHJldHVybiBgJHthdXRob3JpdHl9JHtjbGllbnRJZH0ke3Njb3BlfWA7XG59O1xuXG5jb25zdCBhcnJheUhhc0R1cGxpY2F0ZXMgPSAoYXJyYXk6IHN0cmluZ1tdKTogYm9vbGVhbiA9PlxuICBuZXcgU2V0KGFycmF5KS5zaXplICE9PSBhcnJheS5sZW5ndGg7XG5cbmV4cG9ydCBjb25zdCBlbnN1cmVOb0R1cGxpY2F0ZWRDb25maWdzUnVsZSA9IChcbiAgcGFzc2VkQ29uZmlnczogT3BlbklkQ29uZmlndXJhdGlvbltdXG4pOiBSdWxlVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IGFsbElkZW50aWZpZXJzID0gcGFzc2VkQ29uZmlncy5tYXAoKHgpID0+IGNyZWF0ZUlkZW50aWZpZXJUb0NoZWNrKHgpKTtcblxuICBjb25zdCBzb21lQXJlTm90U2V0ID0gYWxsSWRlbnRpZmllcnMuc29tZSgoeCkgPT4geCA9PT0gJycpO1xuXG4gIGlmIChzb21lQXJlTm90U2V0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc3VsdDogZmFsc2UsXG4gICAgICBtZXNzYWdlczogW1xuICAgICAgICBgUGxlYXNlIG1ha2Ugc3VyZSB5b3UgYWRkIGFuIG9iamVjdCB3aXRoIGEgJ2NvbmZpZycgcHJvcGVydHk6IC4uLi4oeyBjb25maWcgfSkgaW5zdGVhZCBvZiAuLi4oY29uZmlnKWAsXG4gICAgICBdLFxuICAgICAgbGV2ZWw6ICdlcnJvcicsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGhhc0R1cGxpY2F0ZXMgPSBhcnJheUhhc0R1cGxpY2F0ZXMoYWxsSWRlbnRpZmllcnMpO1xuXG4gIGlmIChoYXNEdXBsaWNhdGVzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc3VsdDogZmFsc2UsXG4gICAgICBtZXNzYWdlczogW1xuICAgICAgICAnWW91IGFkZGVkIG11bHRpcGxlIGNvbmZpZ3Mgd2l0aCB0aGUgc2FtZSBhdXRob3JpdHksIGNsaWVudElkIGFuZCBzY29wZScsXG4gICAgICBdLFxuICAgICAgbGV2ZWw6ICd3YXJuaW5nJyxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIFBPU0lUSVZFX1ZBTElEQVRJT05fUkVTVUxUO1xufTtcbiJdfQ==