מנגנון הרשאות ב- Yii

boaZone

New member
מנגנון הרשאות ב- Yii

שלום לכולם!

אני מפתח את המערכת הראשונה שלי על Yii.
במערכת יש כמה "תפקידים" ולא מעט פונקציונליות, ולכi החלטתי לבנות את מערכת ההרשאות על מנגנון ה- Role-Based Access Control של ה- FW.
קראתי את התיאוריה, בניתי לי את העץ שלי, התקנתי מודול נחמד שמנהל את המבנה מול ה- DB (המודול הזה), יצרתי עם המחולל שלו את הפעולות, שייכתי משתמשים לתפקידים.

ופה נתקעתי.

אני לא מצליח למצוא את הקישור הלוגי/הקוד להרשאות של ה- ACTION ב- CONTROLLER עצמו. האם צריך להגדיר שוב ב- accessRules למי מותר מה? איך בלוג-אין אני מקשר בין היוזר לבין ה- ROLE שלו?

נכנסתי לעשרות תוצאות חיפוש בנושא, ולא הצלחתי לקבל תמונה ברורה על הנושא.

הכוונה תיאורטית ומעשית תתקבל בברכה...
תודה,
בועז
 

intval

New member
accessRules בכל קונטרולר

כן, בסוף אתה שם בכל קונטרולר רשימה של accessRules עבור הפעולות באותו קונטרולר.
על מנת לקשר משתמש מסוים ל role כלשהו עליך להגדיר את אותם ה roles
כמו שמתואר כאן בסעיף 8
http://www.yiiframework.com/doc/guide/1.1/en/topics.auth

את הקישור בין משתמש לתפקיד שלו אתה עושה על ידי מימוש המטודה checkAccess של המשתמש, כמו בדוגמה כאן
http://www.yiiframework.com/wiki/328/simple-rbac/
ששם המטודה מחליטה האם למשתמש מותר לעשות הכל, או שצריך לבדוק את הרשאות שלו ביחס להרשאות הדרושות להפעלת הaction
 

intval

New member
בלבול קטן.

את סעיף שמונה אתה צריך רק עם אתה מגדיר פעולות ותפקידים הירארכיים, אבל אתה שאלת רק איך לקשר בין תפקיד למשתמש, הז תתעלם מהפיסקה הראשונה.
 

barnyrebal

New member
איזה זין..


 

boaZone

New member
תודה רבה על התשובה, אך אשמח, אולי, לחדד את

השאלה...

ראשית, לגבי סעיף 8 וכל נושא ההיררכיה, את כל הפונקציונליות הזאת מנהל ב- DB המודול RBAM. אני מניח שהוא גם טוען אותה לאפליקציה. המודול גם מקשר בין יוזר לבין תפקיד, אם כי אני לא ראיתי איך זה נגיש באפליקציה עצמה.

הדוגמא השניה שהבאת מראה בעצם איך לעקוף את מנגנון ההרשאות הרגיל, בזמן שאני דווקא רוצה להשתמש בו (נראה לי, אולי פה אני מפספס משהו).

אתן דוגמא ספציפית, על בלוגים, כפי שנהוג בתחום... ;)
יצרתי תפקיד עורך. הוא יכול לנהל את כל הפונקציוניות של הבלוג (CRUD). יצרתי TASK בשם בלוג, ויצרתי את כל הפעולות, במקביל ל- ACTION שיש בקונטרולר (אם כי, לא בשמות זהים, כי הפעולות חוזרות על עצמן). קישרתי בין כל האובייקטים: תפקיד->משימה->פעולות.

אני הנחתי שיש סוג של מנגנון אוטומטי או חצי אוטומטי, שבו המערכת יודעת שאני היוזר X ששייך לרול Y, ואני מנסה לעשות פעולה Z, וע"פ ההיררכה והקשרים היא בודקת אם יש לי הרשאות או לא.

אתמצת את ההקדמה לשתי שאלות ממוקדות:
1. האם בשימוש במנגנון RBAC, כאשר יוזר עושה לוגין, האפליקציה יודעת
את הרול שלו, ואם כן, איך ניגשים אליו?
2א. כיצד אני מגדיר בקונטרולר, כי לרול Y, מותר לעשות את הפעולות Z1, Z2 ו- Z3, או לחילופין, שמותר לו את כל טאסק G?
2ב. או שאלה חליפית ל- 2, האם יש לי אפשרות לומר במערכת/בקונטרולר שהפעולה Blog:post:Create (זה השם של הפעולה יצירת פוסט ב- RBAC) היא הפעולה actionCreate בקונטרולר הנוכחי, ואז המערכת, אני משער, יכולה לדעת בקלות אם יש ליוזר הנוכחי הרשאות או לא.

תודה ושבת שלום,
בועז
 
למעלה