diff --git a/DEPLOY.md b/DEPLOY.md new file mode 100644 index 0000000..fe09922 --- /dev/null +++ b/DEPLOY.md @@ -0,0 +1,4 @@ +Steps for deploy: +1. Try applying terraform +2. gcloud auth application-default set-quota-project `the project id` +3. retry diff --git a/main.tf b/main.tf index 4af5740..9e7cf79 100644 --- a/main.tf +++ b/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