Mask contact data the sharing preferences form withholds

This commit is contained in:
Ian Gulliver
2026-08-20 22:43:34 -07:00
parent 5038829ac5
commit 99119dac53
10 changed files with 286 additions and 24 deletions
+5 -1
View File
@@ -42,6 +42,10 @@ func main() {
if sheet == "" {
log.Fatal("[ERROR] DIRECTORY_SHEET is required")
}
preferences := os.Getenv("PREFERENCES_SHEET")
if preferences == "" {
log.Fatal("[ERROR] PREFERENCES_SHEET is required")
}
cmd := exec.Command("gcloud",
"run", "deploy", service,
"--image", image,
@@ -54,7 +58,7 @@ func main() {
"--concurrency", "250",
"--no-cpu-throttling",
"--use-http2",
"--set-env-vars", "DIRECTORY_SHEET="+sheet+",GOOGLE_CLIENT_ID="+clientID(),
"--set-env-vars", "DIRECTORY_SHEET="+sheet+",PREFERENCES_SHEET="+preferences+",GOOGLE_CLIENT_ID="+clientID(),
"--set-secrets", secrets,
"--quiet")
cmd.Stdout = os.Stdout
+29 -4
View File
@@ -22,11 +22,12 @@ func (staticFiles) Has(key string) bool {
func main() {
sheet := flag.String("sheet", "", "spreadsheet id")
preferences := flag.String("preferences", "", "preferences spreadsheet id")
flag.Parse()
if *sheet == "" {
log.Fatal("[ERROR] -sheet <spreadsheet id> is required")
if *sheet == "" || *preferences == "" {
log.Fatal("[ERROR] -sheet <spreadsheet id> and -preferences <spreadsheet id> are required")
}
source, err := data.NewSheet(map[string]string{"directory": *sheet})
source, err := data.NewSheet(map[string]string{"directory": *sheet, "preferences": *preferences})
if err != nil {
log.Fatalf("[ERROR] sheet source: %v", err)
}
@@ -51,7 +52,31 @@ func main() {
}
fmt.Printf("people: %d (students %d, parents %d, staff %d, new %d)\n",
len(model.People), students, parents, staff, isNew)
fmt.Printf("families: %d\n", len(model.Families))
byStatus := map[directory.OptStatus]int{}
addressMasked, phoneMasked := 0, 0
for _, p := range model.People {
byStatus[p.OptStatus]++
if p.AddressMasked {
addressMasked++
}
if p.PhoneMasked {
phoneMasked++
}
}
fmt.Printf("preferences: opt in %d, opt out %d, default %d (address masked %d, phone masked %d)\n",
byStatus[directory.OptIn], byStatus[directory.OptOut], byStatus[directory.OptDefault],
addressMasked, phoneMasked)
familyAddressMasked, familyPhoneMasked := 0, 0
for _, f := range model.Families {
if f.AddressMasked {
familyAddressMasked++
}
if f.PhoneMasked {
familyPhoneMasked++
}
}
fmt.Printf("families: %d (address masked %d, phone masked %d)\n",
len(model.Families), familyAddressMasked, familyPhoneMasked)
twoHousehold := map[string]int{}
for _, f := range model.Families {
for _, kid := range f.KidEmails {
+3
View File
@@ -23,6 +23,9 @@ func main() {
if os.Getenv("DIRECTORY_SHEET") == "" {
log.Fatal("[ERROR] DIRECTORY_SHEET is required")
}
if os.Getenv("PREFERENCES_SHEET") == "" {
log.Fatal("[ERROR] PREFERENCES_SHEET is required")
}
logFile, err := os.Create("/tmp/heliosian-server.log")
if err != nil {