@@ -3,52 +3,47 @@ import {generateOAuthClientSecret} from '../../../oauth2/credentials'
33import getKysely from '../../../postgres/getKysely'
44import { getUserId , isUserOrgAdmin } from '../../../utils/authorization'
55import { CipherId } from '../../../utils/CipherId'
6- import { GQLContext } from '../../graphql'
7-
8- interface RegenerateOAuthAPIProviderSecretInput {
9- providerId : string
10- }
11-
12- export default async function regenerateOAuthAPIProviderSecret (
13- _root : any ,
14- { input} : { input : RegenerateOAuthAPIProviderSecretInput } ,
15- context : GQLContext
16- ) {
17- const [ providerId ] = CipherId . fromClient ( input . providerId )
18- const { authToken, dataLoader} = context
19- const viewerId = getUserId ( authToken )
20-
21- const pg = getKysely ( )
22-
23- const provider = await pg
24- . selectFrom ( 'OAuthAPIProvider' )
25- . select ( 'orgId' )
26- . where ( 'id' , '=' , providerId )
27- . executeTakeFirst ( )
28-
29- if ( ! provider ) {
30- throw new GraphQLError ( 'Provider not found' )
6+ import type { MutationResolvers } from '../resolverTypes'
7+
8+ const regenerateOAuthAPIProviderSecret : MutationResolvers [ 'regenerateOAuthAPIProviderSecret' ] =
9+ async ( _root , { input} , context ) => {
10+ const [ providerId ] = CipherId . fromClient ( input . providerId )
11+ const { authToken, dataLoader} = context
12+ const viewerId = getUserId ( authToken )
13+
14+ const pg = getKysely ( )
15+
16+ const provider = await pg
17+ . selectFrom ( 'OAuthAPIProvider' )
18+ . select ( 'orgId' )
19+ . where ( 'id' , '=' , providerId )
20+ . executeTakeFirst ( )
21+
22+ if ( ! provider ) {
23+ throw new GraphQLError ( 'Provider not found' )
24+ }
25+
26+ if ( ! ( await isUserOrgAdmin ( viewerId , provider . orgId , dataLoader ) ) ) {
27+ throw new GraphQLError ( 'Not organization lead' , {
28+ extensions : {
29+ code : 'FORBIDDEN' ,
30+ userId : viewerId
31+ }
32+ } )
33+ }
34+
35+ const newSecret = generateOAuthClientSecret ( )
36+
37+ const updatedProvider = await pg
38+ . updateTable ( 'OAuthAPIProvider' )
39+ . set ( {
40+ clientSecret : newSecret
41+ } )
42+ . where ( 'id' , '=' , providerId )
43+ . returningAll ( )
44+ . executeTakeFirstOrThrow ( )
45+
46+ return { clientSecret : newSecret , clientId : updatedProvider . clientId , provider : updatedProvider }
3147 }
3248
33- if ( ! ( await isUserOrgAdmin ( viewerId , provider . orgId , dataLoader ) ) ) {
34- throw new GraphQLError ( 'Not organization lead' , {
35- extensions : {
36- code : 'FORBIDDEN' ,
37- userId : viewerId
38- }
39- } )
40- }
41-
42- const newSecret = generateOAuthClientSecret ( )
43-
44- const updatedProvider = await pg
45- . updateTable ( 'OAuthAPIProvider' )
46- . set ( {
47- clientSecret : newSecret
48- } )
49- . where ( 'id' , '=' , providerId )
50- . returningAll ( )
51- . executeTakeFirst ( )
52-
53- return { clientSecret : newSecret , clientId : updatedProvider ! . clientId , provider : updatedProvider }
54- }
49+ export default regenerateOAuthAPIProviderSecret
0 commit comments