Skip to content

reuvenharrison/poll

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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

דרישות מערכת

  • 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. כשדייר מצביע, המערכת:
    • בודקת שהדירה לא הצביעה עדיין
    • מוסיפה את פרטי הדירה לאוסף הדירות
    • מוסיפה את ההצבעה לאוסף ההצבעות עם מפתח אקראי
    • כל הפעולות מתבצעות בטרנזקציה אחת להבטחת עקביות

הסתרת תוצאות

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

אבטחת פרטיות

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

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

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

תמיכה

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published