דלג לתוכן הראשי

ניהול משתמשים (Internal)

מודול זה מיועד למנהלי מערכת (Admins) ומאפשר שליטה מלאה על כל המשתמשים במערכת.

ארכיטקטורת Multi-Tenancy

המערכת בנויה כ-SaaS מרובה דיירים, כאשר כל "משתמש" הוא למעשה Tenant (בית כנסת) נפרד. הנתונים של כל משתמש מופרדים לוגית בבסיס הנתונים באמצעות שדה userId.

מנגנון הבידוד (Data Isolation)

  • Middleware: כל שאילתת Prisma עוברת דרך Middleware שמוסיף אוטומטית פילטר where: { userId: currentUserId }.
  • חשיבות: זה מונע זליגת מידע בין בתי כנסת שונים.

פעולות אדמין

1. יצירת משתמש חדש

יש להזין:

  • שם בית הכנסת / גבאי.
  • אימייל (משמש כשם משתמש לכניסה).
  • סיסמא ראשונית (המשתמש יתבקש להחליף).
  • תפקיד (Role).

2. הקצאת תפקידים

ניתן לשנות תפקיד למשתמש קיים דרך ממשק הניהול או ישירות ב-API (PATCH /users/:id/assign-role).

3. התחזות (Impersonation)

מנהלי מערכת יכולים "להיכנס לנעליים" של משתמש כדי לראות את המערכת בדיוק כפי שהוא רואה אותה (לצורך תמיכה טכנית).

  • איך זה עובד? הלקוח שולח כותרת (Header) מיוחדת בבקשה:
    x-customer-context: <TargetUserID>
  • השרת מזהה את הכותרת (מאושר רק ל-Admins) ומפעיל את ה-TenantInterceptor עם ה-ID של המשתמש היעד.
  • במצב זה, כל השאילתות יסוננו לפי המשתמש היעד, והאדמין יראה את הנתונים שלו.
אבטחה

בעת התחזות, דגל ה-isAdmin ב-Context הופך ל-false כדי למנוע עקיפה של מגבלות הלוגיקה העסקית של המשתמש הרגיל.