ניהול משתמשים (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 כדי למנוע עקיפה של מגבלות הלוגיקה העסקית של המשתמש הרגיל.