מסמך זה תורגם על ידי בינה מלאכותית. לכל אי דיוק, אנא עיין בגרסה האנגלית
ACL (Access Control List) משמש לבקרת הרשאות פעולות על משאבים. ניתן להעניק הרשאות לתפקידים, או לעקוף הגבלות תפקידים ולהגביל הרשאות באופן ישיר. מערכת ה-ACL מספקת מנגנון גמיש לניהול הרשאות, התומך בקטעי הרשאה (snippets), תוכנות ביניים (middleware), בדיקות תנאי ועוד.
אובייקטי ACL שייכים למקורות נתונים (dataSource.acl). ניתן לגשת ל-ACL של מקור הנתונים הראשי באמצעות app.acl. לפרטים נוספים על שימוש ב-ACL של מקורות נתונים אחרים, עיינו בפרק ניהול מקורות נתונים.
קטעי הרשאה (Snippets) מאפשרים לרשום צירופי הרשאות נפוצים כיחידות הרשאה הניתנות לשימוש חוזר. לאחר שתפקיד מקושר ל-snippet, הוא מקבל את סט ההרשאות המתאים, מה שמפחית כפילויות בהגדרות ומשפר את יעילות ניהול ההרשאות.
acl.allow() משמשת כדי לאפשר לפעולות מסוימות לעקוף הגבלות תפקידים. היא מתאימה לממשקי API ציבוריים, לתרחישים הדורשים הערכת הרשאות דינמית, או למקרים שבהם יש צורך לבסס את בדיקת ההרשאות על הקשר הבקשה.
תיאור פרמטר condition:
'public': כל משתמש (כולל משתמשים שאינם מחוברים) יכול לגשת, ללא צורך באימות כלשהו.'loggedIn': רק משתמשים מחוברים יכולים לגשת, דורש זהות משתמש תקפה.(ctx) => Promise<boolean> או (ctx) => boolean: פונקציה מותאמת אישית הקובעת באופן דינמי אם הגישה מותרת בהתבסס על הקשר הבקשה; יכולה ליישם לוגיקת הרשאות מורכבת.acl.use() משמשת לרישום תוכנת ביניים (middleware) מותאמת אישית להרשאות, המאפשרת להוסיף לוגיקה מותאמת אישית לתהליך בדיקת ההרשאות. בדרך כלל היא משמשת בשילוב עם ctx.permission להגדרת כללי הרשאה מותאמים אישית. מתאימה לתרחישים הדורשים בקרת הרשאות לא שגרתית, כגון טפסים ציבוריים הדורשים אימות סיסמה מותאם אישית, בדיקות הרשאות דינמיות המבוססות על פרמטרי בקשה ועוד.
תרחישי יישום אופייניים:
בקרת הרשאות באמצעות ctx.permission:
ctx.permission תיאור מאפיינים:
skip: true: עוקף את בדיקות ההרשאה הבאות של ACL ומאפשר גישה ישירה.addFixedParams יכולה להוסיף אילוצי טווח נתונים קבועים (filter) לפעולות מסוימות על משאבים. אילוצים אלה עוקפים הגבלות תפקידים ומיושמים ישירות, ובדרך כלל משמשים להגנה על נתוני מערכת קריטיים.
טיפ:
addFixedParamsיכולה לשמש למניעת מחיקה או שינוי בשוגג של נתונים רגישים, כגון תפקידי מערכת מובנים, חשבונות מנהל מערכת וכדומה. אילוצים אלה פועלים בשילוב עם הרשאות התפקידים, ומבטיחים שגם עם הרשאות לא ניתן לתפעל נתונים מוגנים.
acl.can() משמשת לבדיקה האם לתפקיד מסוים יש הרשאה לבצע פעולה מוגדרת, ומחזירה אובייקט תוצאת הרשאה או null. היא נפוצה בשימוש לבדיקת הרשאות באופן דינמי בלוגיקה עסקית, למשל בתוכנות ביניים (middleware) או ב-Handler של פעולה, כדי לקבוע אם מותר לבצע פעולות מסוימות בהתבסס על תפקידים.
טיפ: אם מועברים מספר תפקידים, כל תפקיד ייבדק ברצף, ותוחזר התוצאה של התפקיד הראשון שיש לו הרשאה.
הגדרות סוג:
אם ברצונכם שפעולות מותאמות אישית יהיו ניתנות להגדרה בממשק המשתמש (לדוגמה, שיופיעו בדף ניהול התפקידים), עליכם להשתמש ב-setAvailableAction כדי לרשום אותן. פעולות רשומות יופיעו בממשק הגדרת ההרשאות, ושם מנהלי מערכת יוכלו להגדיר הרשאות פעולה עבור תפקידים שונים.
תיאור פרמטרים:
{{t("key")}}).'new-data': פעולות היוצרות נתונים חדשים (כמו ייבוא, הוספה וכדומה).'existing-data': פעולות המשנות נתונים קיימים (כמו עדכון, מחיקה וכדומה).'new-data'.לאחר הרישום, פעולה זו תופיע בממשק הגדרת ההרשאות, ושם מנהלי מערכת יוכלו להגדיר את הרשאות הפעולה בדף ניהול התפקידים.