feat: Update Terraform configuration for Google Cloud project with Firebase Authentication services

- Added billing_project to Google Cloud providers
- Enabled user_project_override for both providers
- Added Firebase Authentication service resource
- Configured Identity Platform with email/password, phone, and anonymous sign-in
- Set up authorized domains for local and Firebase hosting
- Added dependency relationships between resources

This enhances the project's infrastructure configuration to properly support Firebase Authentication and related services.
This commit is contained in:
2025-10-31 08:31:50 -07:00
parent 3678869c26
commit 24d07f7a4e
2 changed files with 65 additions and 2 deletions

63
main.tf
View File

@@ -1,15 +1,17 @@
# Configure the Google Cloud provider
provider "google" {
project = var.project_id
billing_project = var.project_id
region = var.region
user_project_override = false
user_project_override = true
}
# Configure the google-beta provider for Firebase resources
provider "google-beta" {
project = var.project_id
billing_project = var.project_id
region = var.region
user_project_override = false
user_project_override = true
}
# Create a new Google Cloud Project
@@ -49,6 +51,15 @@ resource "google_project_service" "firestore_service" {
depends_on = [google_project_service.firebase_services]
}
resource "google_project_service" "auth_service" {
project = google_project.main_project.project_id
service = "identitytoolkit.googleapis.com"
# Wait for Firebase services to be enabled before enabling Firestore
depends_on = [google_project_service.firestore_service]
}
resource "google_firebase_project" "firebase_project" {
provider = google-beta
project = google_project.main_project.project_id
@@ -77,6 +88,54 @@ resource "google_firestore_database" "main_firestore" {
depends_on = [google_project_service.firestore_service]
}
# Configure Identity Platform for Firebase Authentication
resource "google_identity_platform_config" "main_config" {
provider = google-beta
project = google_project.main_project.project_id
# Auto-deletes anonymous users
autodelete_anonymous_users = true
# Configures local sign-in methods, like anonymous, email/password, and phone authentication.
sign_in {
allow_duplicate_emails = true
anonymous {
enabled = true
}
email {
enabled = true
password_required = false
}
phone_number {
enabled = true
test_phone_numbers = {
"+11231231234" = "000000"
}
}
}
# Sets an SMS region policy.
sms_region_config {
allowlist_only {
allowed_regions = [
"US",
"CA",
]
}
}
# Configures authorized domains.
authorized_domains = [
"localhost",
"${google_project.main_project.project_id}.firebaseapp.com",
"${google_project.main_project.project_id}.web.app",
]
depends_on = [google_project_service.auth_service]
}
# Output the project ID and name
output "project_id" {
value = google_project.main_project.project_id