Skip to content

Latest commit

 

History

History
105 lines (79 loc) · 3.87 KB

File metadata and controls

105 lines (79 loc) · 3.87 KB

מערכת הצבעה לדיירים

מערכת פשוטה להצבעה אנונימית עבור דיירי הבניין.

דרישות מערכת

  • Go 1.21 ומעלה
  • חשבון Google Cloud עם Firestore מופעל

התקנה והפעלה

  1. התקן את Go מהאתר הרשמי: https://golang.org/dl/

  2. הגדר פרויקט ב-Google Cloud:

    • צור פרויקט חדש או השתמש בקיים
    • הפעל את Firestore במצב Native
    • הגדר הרשאות מתאימות
  3. התקן את Google Cloud CLI:

  4. התחבר ל-Google Cloud:

    gcloud auth application-default login
  5. הורד את הקוד:

    git clone [URL-של-הריפוזיטורי]
    cd poll
  6. התקן את התלויות:

    go mod tidy
  7. הגדר משתני סביבה:

    # הגדר את מזהה הפרויקט ב-Google Cloud
    export GOOGLE_CLOUD_PROJECT="your-project-id"
    
    # הגדר את מועד סיום ההצבעה (אופציונלי, ברירת מחדל: 1 באפריל 2024 בשעה 23:59:59)
    export POLL_END_TIME="2024-04-01 23:59:59"
  8. הפעל את השרת:

    go run main.go
  9. גש לכתובת הבאה בדפדפן:

    http://localhost:8080
    

משתני סביבה

  • GOOGLE_CLOUD_PROJECT: מזהה הפרויקט ב-Google Cloud
  • POLL_END_TIME: מועד סיום ההצבעה בפורמט "YYYY-MM-DD HH:mm:ss"
    • דוגמה: 2024-04-01 23:59:59
    • ברירת מחדל: 2024-04-01 23:59:59
  • PORT: פורט להפעלת השרת
    • ברירת מחדל: 8080

מנגנון האנונימיות

המערכת מבטיחה אנונימיות מוחלטת של ההצבעות באמצעות מספר מנגנונים:

הפרדת מידע

  • המערכת משתמשת בשני אוספים (collections) נפרדים ב-Firestore:
    1. אוסף דירות (apartments): מכיל רק את מספר הדירה ושם המצביע
    2. אוסף הצבעות (votes): מכיל רק את ההצבעות עצמן, ללא קשר לדירות

מניעת מתאמים

  • כל הצבעה מקבלת מפתח אקראי בעת ההוספה
  • סדר ההצבעות אקראי לחלוטין ואינו מושפע מסדר ההצבעה
  • לא ניתן לקשר בין הצבעה לדירה ספציפית גם אם יש גישה למסד הנתונים

תהליך ההצבעה

  1. כשדייר מצביע, המערכת:
    • בודקת שהדירה לא הצביעה עדיין
    • מוסיפה את פרטי הדירה לאוסף הדירות
    • מוסיפה את ההצבעה לאוסף ההצבעות עם מפתח אקראי
    • כל הפעולות מתבצעות בטרנזקציה אחת להבטחת עקביות

הסתרת תוצאות

  • התוצאות מוסתרות לחלוטין עד לסיום ההצבעה
  • לא ניתן לראות תוצאות ביניים
  • התוצאות מתפרסמות רק לאחר המועד שנקבע מראש

אבטחת פרטיות

  • לא ניתן לשחזר את ההצבעה של דירה מסוימת גם בגישה ישירה למסד הנתונים
  • המערכת לא שומרת לוגים או מידע נוסף שיכול לחשוף את זהות המצביעים

מגבלות המערכת

  • ניתן לראות אילו דירות הצביעו (אך לא מה הצביעו)
  • כל דירה יכולה להצביע פעם אחת בלבד
  • שם המצביע נשמר רק לצורך וידוא שלא תהיה הצבעה כפולה
  • במקרה שכל ההצבעות או רובן המוחלט זהות, ניתן להסיק את כיוון ההצבעה של רוב המצביעים

תמיכה

לשאלות ותמיכה טכנית, צור קשר עם מנהל המערכת.