feat(integration): add github app authentication (#3968)
This commit is contained in:
1 parent
4d57c7ca13
commit
bfcbffbdc6
14 files changed
+282
-77
No files matched your search
@@ -25,16 +25,6 @@ export const testConnectionAsync = async (
|
||||
integrationUrl: integration.url,
|
||||
});
|
||||
|
||||
const formSecrets = integration.secrets
|
||||
.filter((secret) => secret.value !== null)
|
||||
.map((secret) => ({
|
||||
...secret,
|
||||
// We ensured above that the value is not null
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
value: secret.value!,
|
||||
source: "form" as const,
|
||||
}));
|
||||
|
||||
const decryptedDbSecrets = dbSecrets
|
||||
.map((secret) => {
|
||||
try {
|
||||
@@ -55,6 +45,15 @@ export const testConnectionAsync = async (
|
||||
})
|
||||
.filter((secret) => secret !== null);
|
||||
|
||||
const formSecrets = integration.secrets
|
||||
.map((secret) => ({
|
||||
...secret,
|
||||
// If the value is not defined in the form (because we only changed other values) we use the existing value from the db if it exists
|
||||
value: secret.value ?? decryptedDbSecrets.find((dbSecret) => dbSecret.kind === secret.kind)?.value ?? null,
|
||||
source: "form" as const,
|
||||
}))
|
||||
.filter((secret): secret is SourcedIntegrationSecret<"form"> => secret.value !== null);
|
||||
|
||||
const sourcedSecrets = [...formSecrets, ...decryptedDbSecrets];
|
||||
const secretKinds = getSecretKindOption(integration.kind, sourcedSecrets);
|
||||
|
||||
@@ -89,10 +88,10 @@ export const testConnectionAsync = async (
|
||||
return result;
|
||||
};
|
||||
|
||||
interface SourcedIntegrationSecret {
|
||||
interface SourcedIntegrationSecret<TSource extends string = "db" | "form"> {
|
||||
kind: IntegrationSecretKind;
|
||||
value: string;
|
||||
source: "db" | "form";
|
||||
source: TSource;
|
||||
}
|
||||
|
||||
const getSecretKindOption = (kind: IntegrationKind, sourcedSecrets: SourcedIntegrationSecret[]) => {
|
||||
@@ -111,7 +110,9 @@ const getSecretKindOption = (kind: IntegrationKind, sourcedSecrets: SourcedInteg
|
||||
}
|
||||
|
||||
const onlyFormSecretsKindOptions = matchingSecretKindOptions.filter((secretKinds) =>
|
||||
sourcedSecrets.filter((secret) => secretKinds.includes(secret.kind)).every((secret) => secret.source === "form"),
|
||||
secretKinds.every((secretKind) =>
|
||||
sourcedSecrets.find((secret) => secret.kind === secretKind && secret.source === "form"),
|
||||
),
|
||||
);
|
||||
|
||||
if (onlyFormSecretsKindOptions.length >= 1) {
|
||||
|
||||
Reference in new issue
Block a user