-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathinfisical.js
101 lines (91 loc) · 2.35 KB
/
infisical.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import axios from "axios";
import core from "@actions/core";
import querystring from "querystring";
export const UALogin = async ({ clientId, clientSecret, domain }) => {
const loginData = querystring.stringify({
clientId,
clientSecret,
});
try {
const response = await axios({
method: "post",
url: `${domain}/api/v1/auth/universal-auth/login`,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
data: loginData,
});
return response.data.accessToken;
} catch (err) {
core.error("Error:", err.message);
throw err;
}
};
export const oidcLogin = async ({ identityId, domain, oidcAudience }) => {
const idToken = await core.getIDToken(oidcAudience);
const loginData = querystring.stringify({
identityId,
jwt: idToken,
});
try {
const response = await axios({
method: "post",
url: `${domain}/api/v1/auth/oidc-auth/login`,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
data: loginData,
});
return response.data.accessToken;
} catch (err) {
core.error("Error:", err.message);
throw err;
}
};
export const getRawSecrets = async ({
domain,
envSlug,
infisicalToken,
projectSlug,
secretPath,
shouldIncludeImports,
shouldRecurse,
}) => {
try {
const response = await axios({
method: "get",
url: `${domain}/api/v3/secrets/raw`,
headers: {
Authorization: `Bearer ${infisicalToken}`,
},
params: {
secretPath,
environment: envSlug,
include_imports: shouldIncludeImports,
recursive: shouldRecurse,
workspaceSlug: projectSlug,
expandSecretReferences: true,
},
});
const keyValueSecrets = Object.fromEntries(
response.data.secrets.map((secret) => [
secret.secretKey,
secret.secretValue,
])
);
// process imported secrets
const imports = response.data.imports;
for (let x = imports.length - 1; x >= 0; x--) {
const importedSecrets = imports[x].secrets;
importedSecrets.forEach((secret) => {
if (keyValueSecrets[secret.secretKey] === undefined) {
keyValueSecrets[secret.secretKey] = secret.secretValue;
}
});
}
return keyValueSecrets;
} catch (err) {
core.error("Error:", err.message);
throw err;
}
};