Skip to content

Commit c9c056d

Browse files
committed
client facade: create for authProviders
1 parent 45e0372 commit c9c056d

File tree

1 file changed

+44
-2
lines changed

1 file changed

+44
-2
lines changed

components/dashboard/src/service/json-rpc-authprovider-client.ts

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,56 @@ import { getGitpodService } from "./service";
2626

2727
export class JsonRpcAuthProviderClient implements PromiseClient<typeof AuthProviderService> {
2828
async createAuthProvider(request: PartialMessage<CreateAuthProviderRequest>): Promise<CreateAuthProviderResponse> {
29-
throw new ConnectError("unimplemented", Code.Unimplemented);
29+
const ownerId = request.owner?.case === "ownerId" ? request.owner.value : undefined;
30+
const organizationId = request.owner?.case === "organizationId" ? request.owner.value : undefined;
31+
32+
if (!organizationId && !ownerId) {
33+
throw new ConnectError("organizationId or ownerId is required", Code.InvalidArgument);
34+
}
35+
if (!request.type) {
36+
throw new ConnectError("type is required", Code.InvalidArgument);
37+
}
38+
if (!request.host) {
39+
throw new ConnectError("host is required", Code.InvalidArgument);
40+
}
41+
42+
if (organizationId) {
43+
const result = await getGitpodService().server.createOrgAuthProvider({
44+
entry: {
45+
organizationId,
46+
host: request.host,
47+
type: converter.fromAuthProviderType(request.type),
48+
clientId: request.oauth2Config?.clientId,
49+
clientSecret: request.oauth2Config?.clientSecret,
50+
},
51+
});
52+
return new CreateAuthProviderResponse({ authProvider: converter.toAuthProvider(result) });
53+
}
54+
if (ownerId) {
55+
const result = await getGitpodService().server.updateOwnAuthProvider({
56+
entry: {
57+
host: request.host,
58+
ownerId,
59+
type: converter.fromAuthProviderType(request.type),
60+
clientId: request.oauth2Config?.clientId,
61+
clientSecret: request.oauth2Config?.clientSecret,
62+
},
63+
});
64+
return new CreateAuthProviderResponse({ authProvider: converter.toAuthProvider(result) });
65+
}
66+
67+
throw new ConnectError("organizationId or ownerId is required", Code.InvalidArgument);
3068
}
3169

3270
async getAuthProvider(request: PartialMessage<GetAuthProviderRequest>): Promise<GetAuthProviderResponse> {
3371
if (!request.authProviderId) {
3472
throw new ConnectError("authProviderId is required", Code.InvalidArgument);
3573
}
36-
throw new ConnectError("unimplemented", Code.Unimplemented);
74+
75+
const provider = await getGitpodService().server.getAuthProvider(request.authProviderId);
76+
return new GetAuthProviderResponse({
77+
authProvider: converter.toAuthProvider(provider),
78+
});
3779
}
3880

3981
async listAuthProviders(request: PartialMessage<ListAuthProvidersRequest>): Promise<ListAuthProvidersResponse> {

0 commit comments

Comments
 (0)