Skip to content

Commit c979ae3

Browse files
committed
Remove user from team
1 parent 7b3501e commit c979ae3

7 files changed

Lines changed: 96 additions & 4 deletions

File tree

badges/coverage.svg

Lines changed: 1 addition & 1 deletion
Loading

dist/github/teams.d.ts

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js

Lines changed: 39 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/actions.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,9 @@ export async function removeAdmin(
281281
}
282282
}
283283

284+
// Remove from the team.
285+
await teams.removeUser(request, user)
286+
284287
await issues.complete(request, payload.issue)
285288

286289
core.info(`Removed Admin from Class Request: #${payload.issue.number}`)
@@ -377,6 +380,9 @@ export async function removeUser(
377380
repo: repos.generateRepoName(request, user)
378381
})
379382

383+
// Remove from the team.
384+
await teams.removeUser(request, user)
385+
380386
await issues.complete(request, payload.issue)
381387

382388
core.info(`Removed User from Class Request: #${payload.issue.number}`)

src/github/issues.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ export function generateMessage(request: ClassRequest): string {
345345
email: payload.comment.body.split(' ')[1].split(',')[1]
346346
}
347347

348-
return `The following member has been removed: ${user.handle}`
348+
return `The following member has been removed: \`${user.handle}\``
349349
}
350350

351351
throw new Error(`Invalid Action: ${request.action}`)

src/github/teams.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ export async function create(request: ClassRequest): Promise<Team> {
9595
*
9696
* @param request Class Request
9797
* @param user User to Add
98+
* @param role Role to Assign
9899
*/
99100
export async function addUser(
100101
request: ClassRequest,
@@ -118,6 +119,45 @@ export async function addUser(
118119
core.info(`Added User to Class Team: ${user.handle}`)
119120
}
120121

122+
/**
123+
* Removes a member to the team.
124+
*
125+
* @param request Class Request
126+
* @param user User to Remove
127+
*/
128+
export async function removeUser(
129+
request: ClassRequest,
130+
user: User
131+
): Promise<void> {
132+
core.info(`Removing User from Class Team: ${user.handle}`)
133+
134+
// Create the authenticated Octokit client.
135+
const token: string = core.getInput('github_token', { required: true })
136+
const octokit = github.getOctokit(token)
137+
138+
try {
139+
// Check if the user is a member (they must have accepted the invitation).
140+
const membership = await octokit.rest.teams.getMembershipForUserInOrg({
141+
org: Common.OWNER,
142+
team_slug: generateTeamName(request),
143+
username: user.handle
144+
})
145+
146+
// Remove the user from the team.
147+
if (membership.data.state === 'active')
148+
await octokit.rest.teams.removeMembershipForUserInOrg({
149+
org: Common.OWNER,
150+
team_slug: generateTeamName(request),
151+
username: user.handle
152+
})
153+
} catch (error: any) {
154+
// If the user could not be found, they're not in the organization.
155+
if (error.status !== 404) throw error
156+
}
157+
158+
core.info(`Removed User from Class Team: ${user.handle}`)
159+
}
160+
121161
/**
122162
* Deletes the team.
123163
*

0 commit comments

Comments
 (0)