Skip to content

Commit 23f8478

Browse files
committed
feat(github): Support membership in multiple groups
1 parent cb89466 commit 23f8478

1 file changed

Lines changed: 102 additions & 70 deletions

File tree

tf/actions/gheGroups.js

Lines changed: 102 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -25,92 +25,124 @@ exports.onExecutePostLogin = async (event, api) => {
2525
// [1]: https://github.com/mozilla-iam/auth0-deploy/commit/52fdd114301a3e22603b8a869f936f24180521e1
2626
const GHE_SECURITY_MANAGERS_GROUP = "mozilliansorg_ghe_security-managers";
2727

28-
// Object of applications with a 1:1 mapping of clientID and related group
28+
// Object of applications with a 1:many mapping of clientID to related
29+
// groups. A user is granted access if they belong to any of the groups
30+
// listed for the application's clientID.
2931
const applicationGroupMapping = {
3032
// Dev applications
31-
"9MR2UMAftbs6758Rmbs8yZ9Dj5AjeT0P": "mozilliansorg_ghe_ghe-auth-dev_users",
33+
"9MR2UMAftbs6758Rmbs8yZ9Dj5AjeT0P": [
34+
"mozilliansorg_ghe_ghe-auth-dev_users",
35+
"ldap_team_moco",
36+
],
3237

3338
// Prod applications
34-
RzaIwPS6wfABGLrhnCmWdzlCLoKXUY84: "mozilliansorg_ghe_mozilla-actions_users",
35-
EnEylt4OZW6i7yCWzZmCxyCxDRp6lOY0:
39+
RzaIwPS6wfABGLrhnCmWdzlCLoKXUY84: ["mozilliansorg_ghe_mozilla-actions_users"],
40+
EnEylt4OZW6i7yCWzZmCxyCxDRp6lOY0: [
3641
"mozilliansorg_ghe_saml-test-integrations_users",
37-
"2MVzcGFtl2rbdEx97rpC98urD6ZMqUcf": "mozilliansorg_ghe_mozilla-it_users",
38-
Cc2xFG6xS5O8UKoSzoJ4eNggo6jHnzDU: "mozilliansorg_ghe_mozilla-games_users",
39-
"8lXCX2EGQNLixvBqONK3ceCVY2ppYiU6":
42+
],
43+
"2MVzcGFtl2rbdEx97rpC98urD6ZMqUcf": ["mozilliansorg_ghe_mozilla-it_users"],
44+
Cc2xFG6xS5O8UKoSzoJ4eNggo6jHnzDU: ["mozilliansorg_ghe_mozilla-games_users"],
45+
"8lXCX2EGQNLixvBqONK3ceCVY2ppYiU6": [
4046
"mozilliansorg_ghe_mozilla-jetpack_users",
41-
kkVlkyyJjjhONdxjiB4963i4cka6VBSh: "mozilliansorg_ghe_mozilla-twqa_users",
42-
nzV38DSEECYNl9toBfbVvVqXG04d2DaR: "mozilliansorg_ghe_fxos_users",
43-
RXTiiTCJ8wCCHklJuU9NxB1gK3GpFL4J: "mozilliansorg_ghe_fxos-eng_users",
44-
"2mw77kvVsYBwlvZFay45S0e7dJ9Cd6z5": "mozilliansorg_ghe_mozilla-b2g_users",
45-
XBQy3ijpDhqnE9PQLd9fvO85o8NNroFH: "mozilliansorg_ghe_mozilla-tw_users",
46-
pFmfC1JoiDB9DZcrqX5GpiUM0IpDwIi5: "mozilliansorg_ghe_mozillawiki_users",
47-
F7KEqlRIgdC5yUAAq0zm4voJZFk9IlS4:
47+
],
48+
kkVlkyyJjjhONdxjiB4963i4cka6VBSh: ["mozilliansorg_ghe_mozilla-twqa_users"],
49+
nzV38DSEECYNl9toBfbVvVqXG04d2DaR: ["mozilliansorg_ghe_fxos_users"],
50+
RXTiiTCJ8wCCHklJuU9NxB1gK3GpFL4J: ["mozilliansorg_ghe_fxos-eng_users"],
51+
"2mw77kvVsYBwlvZFay45S0e7dJ9Cd6z5": ["mozilliansorg_ghe_mozilla-b2g_users"],
52+
XBQy3ijpDhqnE9PQLd9fvO85o8NNroFH: ["mozilliansorg_ghe_mozilla-tw_users"],
53+
pFmfC1JoiDB9DZcrqX5GpiUM0IpDwIi5: ["mozilliansorg_ghe_mozillawiki_users"],
54+
F7KEqlRIgdC5yUAAq0zm4voJZFk9IlS4: [
4855
"mozilliansorg_ghe_mozilla-outreachy-datascience_users",
49-
lhAIAsdx3jSOiKe1LoHmB0zEsUrCbfhI: "mozilliansorg_ghe_moco-ghe-admin_users",
50-
f1MpcTzYA8J06nUUdO5LuhhA7b4JZVJi: "mozilliansorg_ghe_mozilla_users",
51-
s0v1r2d34lTqPtQu0jBVOKbWOKK4i1TU: "mozilliansorg_ghe_mozmeao_users",
52-
"5GfQ2AMXMqibOsatSYTKh3dVSioVPhGA": "mozilliansorg_ghe_mozrelops_users",
53-
k2dBGcFJAhzlqOuSZH5nQhyq6L87jVaT: "mozilliansorg_ghe_mozilla-svcops_users",
54-
oU3JDtWZSeeBuUcJ0dfLKXU1S2tnTg0K:
56+
],
57+
lhAIAsdx3jSOiKe1LoHmB0zEsUrCbfhI: [
58+
"mozilliansorg_ghe_moco-ghe-admin_users",
59+
],
60+
f1MpcTzYA8J06nUUdO5LuhhA7b4JZVJi: ["mozilliansorg_ghe_mozilla_users"],
61+
s0v1r2d34lTqPtQu0jBVOKbWOKK4i1TU: ["mozilliansorg_ghe_mozmeao_users"],
62+
"5GfQ2AMXMqibOsatSYTKh3dVSioVPhGA": ["mozilliansorg_ghe_mozrelops_users"],
63+
k2dBGcFJAhzlqOuSZH5nQhyq6L87jVaT: ["mozilliansorg_ghe_mozilla-svcops_users"],
64+
oU3JDtWZSeeBuUcJ0dfLKXU1S2tnTg0K: [
5565
"mozilliansorg_ghe_mozilla-applied-ml_users",
56-
NyrIlf4H3ZYtMUfJLs6UmUwllOpfo23v: "mozilliansorg_ghe_mozilla-iam_users",
57-
TeSutPsFGcieGEIl30pL35lrZ4HDEim0: "mozilliansorg_ghe_devtools-html_users",
58-
HPl9z5rJS6mjRUNqkcr2avRZvnnXW1nI: "mozilliansorg_ghe_mozilla-archive_users",
59-
"3agx8byruE6opXpzoAaJl1rvlS6JA8Ly":
66+
],
67+
NyrIlf4H3ZYtMUfJLs6UmUwllOpfo23v: ["mozilliansorg_ghe_mozilla-iam_users"],
68+
TeSutPsFGcieGEIl30pL35lrZ4HDEim0: ["mozilliansorg_ghe_devtools-html_users"],
69+
HPl9z5rJS6mjRUNqkcr2avRZvnnXW1nI: ["mozilliansorg_ghe_mozilla-archive_users"],
70+
"3agx8byruE6opXpzoAaJl1rvlS6JA8Ly": [
6071
"mozilliansorg_ghe_mozilla-commons_users",
61-
Vyg4xo7d0ECLHaLD1DnLl1MYmziqv1SP: "mozilliansorg_ghe_mozilla-lockbox_users",
62-
npLk8377ceFcsXp5SIEJYwBqoXUn1zeu: "mozilliansorg_ghe_mozilla-private_users",
63-
qBv5vlRW7fNiIRIiuSjjZtoulwlUwo6L: "mozilliansorg_ghe_mozilladpx_users",
64-
"4Op3cF3IvEHBGpD6gIFHHUlAXFGLiZWq":
72+
],
73+
Vyg4xo7d0ECLHaLD1DnLl1MYmziqv1SP: [
74+
"mozilliansorg_ghe_mozilla-lockbox_users",
75+
],
76+
npLk8377ceFcsXp5SIEJYwBqoXUn1zeu: [
77+
"mozilliansorg_ghe_mozilla-private_users",
78+
],
79+
qBv5vlRW7fNiIRIiuSjjZtoulwlUwo6L: ["mozilliansorg_ghe_mozilladpx_users"],
80+
"4Op3cF3IvEHBGpD6gIFHHUlAXFGLiZWq": [
6581
"mozilliansorg_ghe_mozilla-frontend-infra_users",
66-
IYfS3mWjTOnCX5YJ6mMWlBWEJyAwUAZm: "mozilliansorg_ghe_mozilla-bteam_users",
67-
tflU5Bd4CAzzlJzgDPT25Ks2CNADkuhZ: "mozilliansorg_ghe_mozilla-conduit_users",
68-
HHb263N55HitFj5bBVFanv2AnF6E6bGf:
82+
],
83+
IYfS3mWjTOnCX5YJ6mMWlBWEJyAwUAZm: ["mozilliansorg_ghe_mozilla-bteam_users"],
84+
tflU5Bd4CAzzlJzgDPT25Ks2CNADkuhZ: ["mozilliansorg_ghe_mozilla-conduit_users"],
85+
HHb263N55HitFj5bBVFanv2AnF6E6bGf: [
6986
"mozilliansorg_ghe_mozilla-sre-deploy_users",
70-
bPCduBPyVFSxPEEdpG3dMdoiHXuj26Kr:
87+
],
88+
bPCduBPyVFSxPEEdpG3dMdoiHXuj26Kr: [
7189
"mozilliansorg_ghe_firefox-devtools_users",
72-
fqzPu0Hg17Vgx90JcWh1nWcV8TN4WkXa: "mozilliansorg_ghe_iodide-project_users",
73-
AcnyB9st2RTC6JfqizCSdaMlzBC7notV: "mozilliansorg_ghe_mozilla-l10n_users",
74-
fdGht0OM5DNTYPTWENtEhrXdGP6zmH9L:
90+
],
91+
fqzPu0Hg17Vgx90JcWh1nWcV8TN4WkXa: ["mozilliansorg_ghe_iodide-project_users"],
92+
AcnyB9st2RTC6JfqizCSdaMlzBC7notV: ["mozilliansorg_ghe_mozilla-l10n_users"],
93+
fdGht0OM5DNTYPTWENtEhrXdGP6zmH9L: [
7594
"mozilliansorg_ghe_mozilla-lockwise_users",
76-
aKU0bzGLTVv53jDokaUDwNUyNfZxgT4R:
95+
],
96+
aKU0bzGLTVv53jDokaUDwNUyNfZxgT4R: [
7797
"mozilliansorg_ghe_mozilla-spidermonkey_users",
78-
Oy6exOuOGejAqExc8fZnSGdJA9t4njnG: "mozilliansorg_ghe_mozillareality_users",
79-
"3iAAhN0vAavOHIzCqnaFKo9Mlqb9pBLH":
98+
],
99+
Oy6exOuOGejAqExc8fZnSGdJA9t4njnG: ["mozilliansorg_ghe_mozillareality_users"],
100+
"3iAAhN0vAavOHIzCqnaFKo9Mlqb9pBLH": [
80101
"mozilliansorg_ghe_mozillasecurity_users",
81-
Qb2ZWerstBXCn5yCXQYU7vUfLuaZ1dMB: "mozilliansorg_ghe_nss-dev_users",
82-
A5hvTaSHqMyrCVMypE3TNhW4VXQzM63d: "mozilliansorg_ghe_nubisproject_users",
83-
VStrUcaxLXH9xQEEFX9Vkf0D5pRo5c6C: "mozilliansorg_ghe_projectfluent_users",
84-
WKOfTFaGTV10YKzfkMOyAl3bgi3BPFMc: "mozilliansorg_ghe_taskcluster_users",
85-
"8Zhm4W07m9OSBlwN2h9FtQorFs6WgbQ8":
102+
],
103+
Qb2ZWerstBXCn5yCXQYU7vUfLuaZ1dMB: ["mozilliansorg_ghe_nss-dev_users"],
104+
A5hvTaSHqMyrCVMypE3TNhW4VXQzM63d: ["mozilliansorg_ghe_nubisproject_users"],
105+
VStrUcaxLXH9xQEEFX9Vkf0D5pRo5c6C: ["mozilliansorg_ghe_projectfluent_users"],
106+
WKOfTFaGTV10YKzfkMOyAl3bgi3BPFMc: ["mozilliansorg_ghe_taskcluster_users"],
107+
"8Zhm4W07m9OSBlwN2h9FtQorFs6WgbQ8": [
86108
"mozilliansorg_ghe_mozilla-mobile_users",
87-
vJG7CGVQutdCWpMGO9pkC5Vn4vgJzJ3I: "mozilliansorg_ghe_mozilla-ocho_users",
88-
dlDfXM5oqapRXUvrkCarPwgTN2INIA9G: "mozilliansorg_ghe_mozilla-metrics_users",
89-
lJbj6OE9VFK05i2XjZEiAEljamPyOCkz:
109+
],
110+
vJG7CGVQutdCWpMGO9pkC5Vn4vgJzJ3I: ["mozilliansorg_ghe_mozilla-ocho_users"],
111+
dlDfXM5oqapRXUvrkCarPwgTN2INIA9G: ["mozilliansorg_ghe_mozilla-metrics_users"],
112+
lJbj6OE9VFK05i2XjZEiAEljamPyOCkz: [
90113
"mozilliansorg_ghe_mozilla-platform-ops_users",
91-
AgiLB9xCoW4beavY9z7UuvO36DLmdwJ1: "mozilliansorg_ghe_mozilla-rally_users",
92-
QfJVAjXlaGzpCo5S48J9D38QvIfhlYzF: "mozilliansorg_ghe_mozilla-data_users",
93-
UwUgLsXH6YtrWLATQpTuil2iNilYGGhF:
114+
],
115+
AgiLB9xCoW4beavY9z7UuvO36DLmdwJ1: ["mozilliansorg_ghe_mozilla-rally_users"],
116+
QfJVAjXlaGzpCo5S48J9D38QvIfhlYzF: ["mozilliansorg_ghe_mozilla-data_users"],
117+
UwUgLsXH6YtrWLATQpTuil2iNilYGGhF: [
94118
"mozilliansorg_ghe_mozilla-services_users",
95-
RLPUxhCQsmmRHyOmDOGkLpu1mArNH3xn: "mozilliansorg_ghe_firefoxux_users",
96-
KMcYzqySOFXHteY1zliDlq577ARCb6gi: "mozilliansorg_ghe_mozillasocial_users",
97-
IEc83wZvZzcQXMkpUmrnb9P8wztUiokl: "mozilliansorg_ghe_mozscout_users",
98-
vkoDkHlCEUhlHNhVDtewJqRLVLGVsPrZ:
119+
],
120+
RLPUxhCQsmmRHyOmDOGkLpu1mArNH3xn: ["mozilliansorg_ghe_firefoxux_users"],
121+
KMcYzqySOFXHteY1zliDlq577ARCb6gi: ["mozilliansorg_ghe_mozillasocial_users"],
122+
IEc83wZvZzcQXMkpUmrnb9P8wztUiokl: ["mozilliansorg_ghe_mozscout_users"],
123+
vkoDkHlCEUhlHNhVDtewJqRLVLGVsPrZ: [
99124
"mozilliansorg_ghe_mozilla-fakespot_users",
100-
T6mjvGguOB5hkq9Aviaa58tOlwpJG5o6: "mozilliansorg_ghe_mozilla-necko_users",
101-
ZemrAl9S2q9GKJNQUdjZCNsLiVmSEg1P: "mozilliansorg_ghe_mozilla-privacy_users",
102-
sZHTTA4iuHgmiQGzbkS7lcXE1bbMGces: "mozilliansorg_ghe_firefoxgraphics_users",
103-
JDiNCQVrXzw2ILureegz1T8c3OrUZCUb: "mozilliansorg_ghe_mozilla-firefox_users",
104-
"3hrj2F7ec00Y0nYMZivYzJh6FnqydBX5": "mozilliansorg_ghe_firefox-ai_users",
105-
AbtfcVLkkFuMR0A1fWUvDQrVZOhEyDMA: "mozilliansorg_ghe_mozillaonline_users",
106-
TzMKYmrhJY9XWX8f6xVHkhZHMC4BhPuj: "mozilliansorg_ghe_fxbox_users",
107-
JT3G28PrEk9Or1bzHSu0TBsj2ETeRuXm: "mozilliansorg_ghe_mozilla-homeweb_users",
108-
AOM1RgIbojnqYL0fvSg2Xtv6YDIBe7Xc:
125+
],
126+
T6mjvGguOB5hkq9Aviaa58tOlwpJG5o6: ["mozilliansorg_ghe_mozilla-necko_users"],
127+
ZemrAl9S2q9GKJNQUdjZCNsLiVmSEg1P: ["mozilliansorg_ghe_mozilla-privacy_users"],
128+
sZHTTA4iuHgmiQGzbkS7lcXE1bbMGces: [
129+
"mozilliansorg_ghe_firefoxgraphics_users",
130+
],
131+
JDiNCQVrXzw2ILureegz1T8c3OrUZCUb: ["mozilliansorg_ghe_mozilla-firefox_users"],
132+
"3hrj2F7ec00Y0nYMZivYzJh6FnqydBX5": ["mozilliansorg_ghe_firefox-ai_users"],
133+
AbtfcVLkkFuMR0A1fWUvDQrVZOhEyDMA: ["mozilliansorg_ghe_mozillaonline_users"],
134+
TzMKYmrhJY9XWX8f6xVHkhZHMC4BhPuj: ["mozilliansorg_ghe_fxbox_users"],
135+
JT3G28PrEk9Or1bzHSu0TBsj2ETeRuXm: [
136+
"mozilliansorg_ghe_mozilla-homeweb_users",
137+
],
138+
AOM1RgIbojnqYL0fvSg2Xtv6YDIBe7Xc: [
109139
"mozilliansorg_ghe_mozilla-sensorweb_users",
110-
gIIYBLT64qngNFQOtOrfQBe29fCDw4mJ: "mozilliansorg_ghe_project-abigail_users",
111-
RclZSiMw5J5dbYXGkPTQJ6K31WxaGd8E:
140+
],
141+
gIIYBLT64qngNFQOtOrfQBe29fCDw4mJ: ["mozilliansorg_ghe_project-abigail_users"],
142+
RclZSiMw5J5dbYXGkPTQJ6K31WxaGd8E: [
112143
"mozilliansorg_ghe_project-lighthouse_users",
113-
PVxjlYImxnDIFaqZpiIYGu7ML1xI82Ew: "mozilliansorg_ghe_fxos-components_users",
144+
],
145+
PVxjlYImxnDIFaqZpiIYGu7ML1xI82Ew: ["mozilliansorg_ghe_fxos-components_users"],
114146
};
115147

116148
// ClientID isn't mapped here, return callback() and proceed rules processing
@@ -229,15 +261,15 @@ exports.onExecutePostLogin = async (event, api) => {
229261
console.log("empty HACK#GITHUB");
230262
return bail("ghnd");
231263
}
232-
// Confirm the user has the group defined from mozillians matching the
233-
// application's client id.
264+
// Confirm the user has one of the groups defined from mozillians matching
265+
// the application's client id.
234266
if (
235-
event.user.app_metadata.groups?.includes(
236-
applicationGroupMapping[event.client.client_id]
267+
applicationGroupMapping[event.client.client_id].some((group) =>
268+
event.user.app_metadata.groups?.includes(group)
237269
)
238270
) {
239271
console.log(
240-
`Granting access for ${githubUsername} (member of the mozillians GHE group)`
272+
`Granting access for ${githubUsername} (member of a mozillians GHE group)`
241273
);
242274
return;
243275
}

0 commit comments

Comments
 (0)