Path: blob/main/components/dashboard/src/service/json-rpc-verification-client.ts
2500 views
/**1* Copyright (c) 2023 Gitpod GmbH. All rights reserved.2* Licensed under the GNU Affero General Public License (AGPL).3* See License.AGPL.txt in the project root for license information.4*/56import { CallOptions, PromiseClient } from "@connectrpc/connect";7import { PartialMessage } from "@bufbuild/protobuf";8import { VerificationService } from "@gitpod/public-api/lib/gitpod/v1/verification_connect";9import {10SendPhoneNumberVerificationTokenRequest,11SendPhoneNumberVerificationTokenResponse,12VerifyPhoneNumberVerificationTokenRequest,13VerifyPhoneNumberVerificationTokenResponse,14} from "@gitpod/public-api/lib/gitpod/v1/verification_pb";15import { ApplicationError, ErrorCodes } from "@gitpod/gitpod-protocol/lib/messaging/error";16import { getGitpodService } from "./service";17import { validate as uuidValidate } from "uuid";1819export class JsonRpcVerificationClient implements PromiseClient<typeof VerificationService> {20async sendPhoneNumberVerificationToken(21request: PartialMessage<SendPhoneNumberVerificationTokenRequest>,22_options?: CallOptions | undefined,23): Promise<SendPhoneNumberVerificationTokenResponse> {24if (!request.phoneNumber) {25throw new ApplicationError(ErrorCodes.BAD_REQUEST, "phoneNumber is required");26}27const info = await getGitpodService().server.sendPhoneNumberVerificationToken(request.phoneNumber);28return new SendPhoneNumberVerificationTokenResponse({29verificationId: info.verificationId,30});31}3233async verifyPhoneNumberVerificationToken(34request: PartialMessage<VerifyPhoneNumberVerificationTokenRequest>,35_options?: CallOptions | undefined,36): Promise<VerifyPhoneNumberVerificationTokenResponse> {37if (!request.phoneNumber) {38throw new ApplicationError(ErrorCodes.BAD_REQUEST, "phoneNumber is required");39}40if (!request.verificationId || !uuidValidate(request.verificationId)) {41throw new ApplicationError(ErrorCodes.BAD_REQUEST, "verificationId is required");42}43if (!request.token) {44throw new ApplicationError(ErrorCodes.BAD_REQUEST, "token is required");45}46const info = await getGitpodService().server.verifyPhoneNumberVerificationToken(47request.phoneNumber,48request.token,49request.verificationId,50);51return new VerifyPhoneNumberVerificationTokenResponse({52verified: info,53});54}55}565758