@@ -36,7 +36,35 @@ export class AuthProviderServiceAPI implements ServiceImpl<typeof AuthProviderSe
36
36
request : CreateAuthProviderRequest ,
37
37
context : HandlerContext ,
38
38
) : Promise < CreateAuthProviderResponse > {
39
- throw new ConnectError ( "unimplemented" , Code . Unimplemented ) ;
39
+ const ownerId = request . owner . case === "ownerId" ? request . owner . value : undefined ;
40
+ const organizationId = request . owner . case === "organizationId" ? request . owner . value : undefined ;
41
+
42
+ if ( ! organizationId && ! ownerId ) {
43
+ throw new ConnectError ( "organizationId or ownerId is required" , Code . InvalidArgument ) ;
44
+ }
45
+
46
+ if ( organizationId ) {
47
+ const result = await this . authProviderService . createOrgAuthProvider ( context . user . id , {
48
+ organizationId,
49
+ host : request . host ,
50
+ ownerId : context . user . id ,
51
+ type : this . apiConverter . fromAuthProviderType ( request . type ) ,
52
+ clientId : request . oauth2Config ?. clientId ,
53
+ clientSecret : request . oauth2Config ?. clientSecret ,
54
+ } ) ;
55
+
56
+ return new CreateAuthProviderResponse ( { authProvider : this . apiConverter . toAuthProvider ( result ) } ) ;
57
+ } else {
58
+ const result = await this . authProviderService . createAuthProviderOfUser ( context . user . id , {
59
+ host : request . host ,
60
+ ownerId : context . user . id ,
61
+ type : this . apiConverter . fromAuthProviderType ( request . type ) ,
62
+ clientId : request . oauth2Config ?. clientId ,
63
+ clientSecret : request . oauth2Config ?. clientSecret ,
64
+ } ) ;
65
+
66
+ return new CreateAuthProviderResponse ( { authProvider : this . apiConverter . toAuthProvider ( result ) } ) ;
67
+ }
40
68
}
41
69
async getAuthProvider ( request : GetAuthProviderRequest , context : HandlerContext ) : Promise < GetAuthProviderResponse > {
42
70
if ( ! request . authProviderId ) {
@@ -88,13 +116,62 @@ export class AuthProviderServiceAPI implements ServiceImpl<typeof AuthProviderSe
88
116
request : UpdateAuthProviderRequest ,
89
117
context : HandlerContext ,
90
118
) : Promise < UpdateAuthProviderResponse > {
91
- throw new ConnectError ( "unimplemented" , Code . Unimplemented ) ;
119
+ if ( ! request . authProviderId ) {
120
+ throw new ConnectError ( "authProviderId is required" , Code . InvalidArgument ) ;
121
+ }
122
+ const clientId = request ?. oauth2Config ?. clientId ;
123
+ const clientSecret = request ?. oauth2Config ?. clientSecret ;
124
+ if ( ! clientId || typeof clientSecret === "undefined" ) {
125
+ throw new ConnectError ( "clientId or clientSecret are required" , Code . InvalidArgument ) ;
126
+ }
127
+
128
+ const authProvider = await this . authProviderService . getAuthProvider ( context . user . id , request . authProviderId ) ;
129
+ if ( ! authProvider ) {
130
+ throw new ConnectError ( "Provider not found." , Code . NotFound ) ;
131
+ }
132
+
133
+ if ( authProvider . organizationId ) {
134
+ await this . authProviderService . updateOrgAuthProvider ( context . user . id , {
135
+ id : request . authProviderId ,
136
+ organizationId : authProvider . organizationId ,
137
+ clientId : clientId ,
138
+ clientSecret : clientSecret ,
139
+ } ) ;
140
+ } else {
141
+ await this . authProviderService . updateAuthProviderOfUser ( context . user . id , {
142
+ id : request . authProviderId ,
143
+ ownerId : context . user . id ,
144
+ clientId : clientId ,
145
+ clientSecret : clientSecret ,
146
+ } ) ;
147
+ }
148
+
149
+ return new UpdateAuthProviderResponse ( ) ;
92
150
}
93
151
94
152
async deleteAuthProvider (
95
153
request : DeleteAuthProviderRequest ,
96
154
context : HandlerContext ,
97
155
) : Promise < DeleteAuthProviderResponse > {
98
- throw new ConnectError ( "unimplemented" , Code . Unimplemented ) ;
156
+ if ( ! request . authProviderId ) {
157
+ throw new ConnectError ( "authProviderId is required" , Code . InvalidArgument ) ;
158
+ }
159
+
160
+ const authProvider = await this . authProviderService . getAuthProvider ( context . user . id , request . authProviderId ) ;
161
+ if ( ! authProvider ) {
162
+ throw new ConnectError ( "Provider not found." , Code . NotFound ) ;
163
+ }
164
+
165
+ if ( authProvider . organizationId ) {
166
+ await this . authProviderService . deleteAuthProviderOfOrg (
167
+ context . user . id ,
168
+ authProvider . organizationId ,
169
+ request . authProviderId ,
170
+ ) ;
171
+ } else {
172
+ await this . authProviderService . deleteAuthProviderOfUser ( context . user . id , request . authProviderId ) ;
173
+ }
174
+
175
+ return new DeleteAuthProviderResponse ( ) ;
99
176
}
100
177
}
0 commit comments