-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
70 lines (64 loc) · 2.67 KB
/
index.js
File metadata and controls
70 lines (64 loc) · 2.67 KB
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
const core = require('@actions/core');
const github = require('@actions/github');
const fetch = require('node-fetch');
async function getApplication(oktaDomain, oktaApiToken, oktaApplicationId) {
console.log("URL", `https://${oktaDomain}/api/v1/apps/${oktaApplicationId}`);
return fetch(`https://${oktaDomain}/api/v1/apps/${oktaApplicationId}`, {
method: "GET",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
Authorization: `SSWS ${oktaApiToken}`
}
})
.then(res => res.json())
.catch(err => {
core.setFailed(`Failed to retrieve application information ${err}`);
});
};
async function editApplication(oktaDomain, oktaApiToken, oktaApplicationId, action, loginRedirectUri, logoutRedirectUri) {
const applicationInfo = await getApplication(oktaDomain, oktaApiToken, oktaApplicationId);
core.debug(applicationInfo);
let redirect_uris = applicationInfo.settings.oauthClient.redirect_uris;
let post_logout_redirect_uris = applicationInfo.settings.oauthClient.post_logout_redirect_uris;
if (action === "add") {
if (redirect_uris.indexOf(loginRedirectUri) === -1) {
redirect_uris.push(loginRedirectUri);
}
if (post_logout_redirect_uris.indexOf(logoutRedirectUri) === -1) {
post_logout_redirect_uris.push(logoutRedirectUri);
}
} else if (action === "remove") {
redirect_uris = redirect_uris.filter(uri => uri !== loginRedirectUri);
post_logout_redirect_uris = post_logout_redirect_uris.filter(uri => uri !== logoutRedirectUri);
}
applicationInfo.settings.oauthClient.redirect_uris = redirect_uris;
applicationInfo.settings.oauthClient.post_logout_redirect_uris = post_logout_redirect_uris;
return fetch(`https://${oktaDomain}/api/v1/apps/${oktaApplicationId}`, {
method: "PUT",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
Authorization: `SSWS ${oktaApiToken}`
},
body: JSON.stringify(applicationInfo)
})
.then(res => res.json())
.catch(err => {
core.setFailed(`Failed to edit application information ${err}`);
});
}
(async () => {
try {
const oktaApiToken = core.getInput("okta-api-token");
const oktaDomain = core.getInput("okta-domain");
const oktaApplicationId = core.getInput("okta-application-id");
const loginRedirectUri = core.getInput("login-redirect-uri");
const logoutRedirectUri = core.getInput("logout-redirect-uri");
const action = core.getInput("action");
const result = await editApplication(oktaDomain, oktaApiToken, oktaApplicationId, action, loginRedirectUri, logoutRedirectUri);
core.debug(result);
} catch (error) {
core.setFailed(error.message);
}
})();