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:
63
main.tf
63
main.tf
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user