Skip to content

Commit 58a7463

Browse files
kyle-ssgclaudegemini-code-assist[bot]matthewelwell
authored
feat: choose environment administrators on environment creation (#7610)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: Matthew Elwell <matthew.elwell@flagsmith.com>
1 parent 4be0701 commit 58a7463

4 files changed

Lines changed: 380 additions & 112 deletions

File tree

frontend/common/services/useRolePermission.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,17 @@ export const rolePermissionService = service
66
.enhanceEndpoints({ addTagTypes: ['rolePermission'] })
77
.injectEndpoints({
88
endpoints: (builder) => ({
9+
createEnvironmentRolePermission: builder.mutation<
10+
Res['rolePermission'],
11+
Req['createEnvironmentRolePermission']
12+
>({
13+
invalidatesTags: () => [{ type: 'rolePermission' }],
14+
query: (query: Req['createEnvironmentRolePermission']) => ({
15+
body: query.body,
16+
method: 'POST',
17+
url: `organisations/${query.organisation_id}/roles/${query.role_id}/environments-permissions/`,
18+
}),
19+
}),
920
createProjectRolePermission: builder.mutation<
1021
Res['rolePermission'],
1122
Req['createProjectRolePermission']
@@ -177,6 +188,7 @@ export async function createRolePermissions(
177188
// END OF FUNCTION_EXPORTS
178189

179190
export const {
191+
useCreateEnvironmentRolePermissionMutation,
180192
useCreateProjectRolePermissionMutation,
181193
useCreateRolePermissionsMutation,
182194
useGetRoleEnvironmentPermissionsQuery,

frontend/common/services/useUserPermissions.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,20 @@ export const userPermissionsService = service
66
.enhanceEndpoints({ addTagTypes: ['UserPermissions'] })
77
.injectEndpoints({
88
endpoints: (builder) => ({
9+
createEnvironmentUserPermission: builder.mutation<
10+
Res['userPermissions'],
11+
Req['createEnvironmentUserPermission']
12+
>({
13+
invalidatesTags: [{ id: 'LIST', type: 'UserPermissions' }],
14+
query: ({
15+
body,
16+
environmentId,
17+
}: Req['createEnvironmentUserPermission']) => ({
18+
body,
19+
method: 'POST',
20+
url: `environments/${environmentId}/user-permissions/`,
21+
}),
22+
}),
923
createProjectUserPermission: builder.mutation<
1024
Res['userPermissions'],
1125
Req['createProjectUserPermission']
@@ -44,6 +58,7 @@ export async function getUserPermissions(
4458
// END OF FUNCTION_EXPORTS
4559

4660
export const {
61+
useCreateEnvironmentUserPermissionMutation,
4762
useCreateProjectUserPermissionMutation,
4863
useGetUserPermissionsQuery,
4964
// END OF EXPORTS

frontend/common/types/requests.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,15 @@ export type Req = {
362362
project: number
363363
}
364364
}
365+
createEnvironmentRolePermission: {
366+
organisation_id: number
367+
role_id: number
368+
body: {
369+
admin?: boolean
370+
permissions: RolePermission['permissions']
371+
environment: number
372+
}
373+
}
365374
updateRolePermission: Req['createRolePermission'] & { id: number }
366375
deleteRolePermission: { organisation_id: number; role_id: number }
367376

@@ -661,6 +670,14 @@ export type Req = {
661670
user: number
662671
}
663672
}
673+
createEnvironmentUserPermission: {
674+
environmentId: string
675+
body: {
676+
admin?: boolean
677+
permissions: string[]
678+
user: number
679+
}
680+
}
664681
createGroup: {
665682
orgId: number
666683
data: Omit<UserGroup, 'id' | 'users'>

0 commit comments

Comments
 (0)