diff --git a/CHANGELOG.md b/CHANGELOG.md index 55f648867bc..35534a94a86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,2 @@ -- Re-add a dialog to let users know TLS is being provisioned in App Hosting (#7595) -- Improve Firebase Data Connect postgres security by granting fine grained SQL privileges to the users the need it. (#7578) -- Remove `dataconnect:sql:migrate` command hard dependency on 'roles/cloudsql.admin'. (#7578) -- Add support for setting the encryption configuration of restored firestore databases (#7483) -- Added support for deploying `beforeEmailSent` blocking functions. (#6384) +- Add support for deploying `beforeEmailSent` blocking function. (#6384) +- Add support for `beforeSmsSent` auth blocking triggers. (#6733) diff --git a/src/deploy/functions/services/auth.ts b/src/deploy/functions/services/auth.ts index 203c3f6a57d..09933da65fc 100644 --- a/src/deploy/functions/services/auth.ts +++ b/src/deploy/functions/services/auth.ts @@ -55,7 +55,8 @@ export class AuthBlockingService implements Service { newConfig.triggers?.beforeSignIn?.functionUri !== config.triggers?.beforeSignIn?.functionUri || newConfig.triggers?.beforeSendEmail?.functionUri !== - config.triggers?.beforeSendEmail?.functionUri + config.triggers?.beforeSendEmail?.functionUri || + newConfig.triggers?.beforeSendSms?.functionUri !== config.triggers?.beforeSendSms?.functionUri ) { return true; } @@ -99,6 +100,13 @@ export class AuthBlockingService implements Service { functionUri: endpoint.uri!, }, }; + } else if (endpoint.blockingTrigger.eventType === events.v1.BEFORE_SEND_SMS_EVENT) { + newBlockingConfig.triggers = { + ...newBlockingConfig.triggers, + beforeSendSms: { + functionUri: endpoint.uri!, + }, + }; } else { throw new FirebaseError( `Received invalid blocking trigger event type ${endpoint.blockingTrigger.eventType}`, @@ -136,7 +144,8 @@ export class AuthBlockingService implements Service { if ( endpoint.uri !== blockingConfig.triggers?.beforeCreate?.functionUri && endpoint.uri !== blockingConfig.triggers?.beforeSignIn?.functionUri && - endpoint.uri !== blockingConfig.triggers?.beforeSendEmail?.functionUri + endpoint.uri !== blockingConfig.triggers?.beforeSendEmail?.functionUri && + endpoint.uri !== blockingConfig.triggers?.beforeSendSms?.functionUri ) { return; } @@ -153,6 +162,9 @@ export class AuthBlockingService implements Service { if (endpoint.uri === blockingConfig.triggers?.beforeSendEmail?.functionUri) { delete blockingConfig.triggers?.beforeSendEmail; } + if (endpoint.uri === blockingConfig.triggers?.beforeSendSms?.functionUri) { + delete blockingConfig.triggers?.beforeSendSms; + } await identityPlatform.setBlockingFunctionsConfig(endpoint.project, blockingConfig); } diff --git a/src/deploy/functions/services/index.ts b/src/deploy/functions/services/index.ts index 9fae648ba0b..b0f60e3092f 100644 --- a/src/deploy/functions/services/index.ts +++ b/src/deploy/functions/services/index.ts @@ -141,6 +141,7 @@ const EVENT_SERVICE_MAPPING: Record = { "providers/cloud.auth/eventTypes/user.beforeCreate": authBlockingService, "providers/cloud.auth/eventTypes/user.beforeSignIn": authBlockingService, "providers/cloud.auth/eventTypes/user.beforeSendEmail": authBlockingService, + "providers/cloud.auth/eventTypes/user.beforeSendSms": authBlockingService, "google.firebase.database.ref.v1.written": databaseService, "google.firebase.database.ref.v1.created": databaseService, "google.firebase.database.ref.v1.updated": databaseService, diff --git a/src/functions/constants.ts b/src/functions/constants.ts index c6e2594008b..744cc1cb429 100644 --- a/src/functions/constants.ts +++ b/src/functions/constants.ts @@ -7,10 +7,12 @@ export const BLOCKING_LABEL_KEY_TO_EVENT: Record = { "providers/cloud.auth/eventTypes/user.beforeCreate": "before-create", "providers/cloud.auth/eventTypes/user.beforeSignIn": "before-sign-in", "providers/cloud.auth/eventTypes/user.beforeSendEmail": "before-send-email", + "providers/cloud.auth/eventTypes/user.beforeSendSms": "before-send-sms", }; diff --git a/src/functions/events/v1.ts b/src/functions/events/v1.ts index 7466354633f..d4f201b2358 100644 --- a/src/functions/events/v1.ts +++ b/src/functions/events/v1.ts @@ -4,10 +4,13 @@ export const BEFORE_SIGN_IN_EVENT = "providers/cloud.auth/eventTypes/user.before export const BEFORE_SEND_EMAIL_EVENT = "providers/cloud.auth/eventTypes/user.beforeSendEmail"; +export const BEFORE_SEND_SMS_EVENT = "providers/cloud.auth/eventTypes/user.beforeSendSms"; + export const AUTH_BLOCKING_EVENTS = [ BEFORE_CREATE_EVENT, BEFORE_SIGN_IN_EVENT, BEFORE_SEND_EMAIL_EVENT, + BEFORE_SEND_SMS_EVENT, ] as const; export type Event = (typeof AUTH_BLOCKING_EVENTS)[number]; diff --git a/src/gcp/identityPlatform.ts b/src/gcp/identityPlatform.ts index 5afc964a07e..a4948a40b85 100644 --- a/src/gcp/identityPlatform.ts +++ b/src/gcp/identityPlatform.ts @@ -42,6 +42,7 @@ export interface BlockingFunctionsConfig { beforeCreate?: BlockingFunctionsEventDetails; beforeSignIn?: BlockingFunctionsEventDetails; beforeSendEmail?: BlockingFunctionsEventDetails; + beforeSendSms?: BlockingFunctionsEventDetails; }; forwardInboundCredentials?: BlockingFunctionsOptions; }