شنبه ۲۸ مهر ۱۳۸۶
 
Zend_Acl
با اینکه من از نوشتن این چیزها توی وبلاگ شخصی متنفر هستم ولی خب باید یکجا در موردش بنویسم که بعدا بتونم بهش رجوع کنم شاید بدرد شما هم بخوره

سیستمش خیلی ساده ولی قوی هست. شما کلا با دوچیز سروکار دارید :
  • منابع - Resources
    مثلا فرض کنید منابع توی یک سایت دسترسی به فرستادن مقاله باشه !
    خب این دسترسی ها مثلا می تونه ایجاد(create), خواندن(read), ویرایش(edit), حذف(delete و ... باشه این کلاس شما رو محدود نمی کنه !

  • قوانین - Roles
    توی یک سایت مثلا می تونیم یک سری قوانین برای مهمان, کاربر عضو شده و یا مدیر در نظر بگیریم.


یک مثال می زنم امیداورم که متوجه بشید !
فرض کنید یک خانواده داریم که ۴ نفر هستند ! پدر مادر دختر بچه و یک نی نی کوچولو که متاسفانه جنسیتش رو یادم رفت مشخص کنم !
خب اینها می خواند برند پیک نیک ولی این پدر مادر متهعد می ترسند که وقتی سوار ماشین(این همون Resource هست ها !) هستند یک وقت بچه ها کاری بکنند که واسشون خطرناک باشه از همه مهمتر پدره می ترسه که خانومش بشین پشت فرمون !
خلاصه از ما درخواست می کنند که یک برنامه بنویسیم که واسشون سطح دسترسی رو مشخص کنه !
ما هم این قوانین رو می گذاریم :
نی نی فقط می تونه صندلی عقب بشینه
دختر هم می تونه کار های نی نی رو انجام بده هم در ها رو باز بسته کنه
مادره هم می تونه کارهای دو نفر قبلی رو انجام بده و می تونه بشینه کنار راننده !
پدر هم همه کاری می تونه بکنه

خب این کدی هست که واسشون نوشتم البته قبل از اینکه پولش رو بدند فرار کردند ولی به هر حال تمرین خوب بود برای کار با Zend_Acl :
//begin

<?
require_once 'Zend/Acl.php';

$acl = new Zend_Acl();

require_once 
'Zend/Acl/Role.php';

//Create baby role
$role_baby=new Zend_Acl_Role('baby');
//Add to roles
$acl->addRole($role_baby);
$acl->addRole(new Zend_Acl_Role('girl'),$role_baby);
$acl->addRole(new Zend_Acl_Role('mamy'),'girl');
//Dady is powerfull !
$acl->addRole(new Zend_Acl_Role('dady'));

require_once 
'Zend/Acl/Resource.php';
//add car as a resource 
$acl->add(new Zend_Acl_Resource('car'));

//set ACL
$acl->allow('baby','car',array('sit_down_back'));

$acl->allow('girl','car',array('open_door','close_door'));

$acl->allow('mamy','car',array('sit_down_beside_driver'));
//dady can do everything he wants !
$acl->allow('dady','car');

echo 
'babay <b>';
echo 
$acl->isAllowed('baby''car''sit_down_back') ?  "can" "can't"
echo 
'</b> sit down back<br />';
echo 
'babay <b>';
echo 
$acl->isAllowed('baby''car''open_door') ?  "can" "can't"
echo 
'</b> open door<br />';
echo 
'girl <b>';
echo 
$acl->isAllowed('girl','car','sit_down_beside_driver') ? "can" "can't";
echo 
'</b>  sit down beside driver<br />';
echo 
'mamy <b>';
echo 
$acl->isAllowed('mamy','car','driver') ? "can" "can't";
echo 
'</b> drive a car<br />';
echo 
'dady <b>';
echo 
$acl->isAllowed('dady','car','drive') ? "can" "can't";
echo 
'</b> drive a car  <br />';
echo 
'dady <b>';
echo 
$acl->isAllowed('dady','car','go_to_wall') ? "can" "can't";
echo 
'</b> go to wall with car <br />';

echo 
'<br /><br />Ye man! dady can do anything :P ';
?>

//end

خروجی :

babay can sit down back
babay can't open door
girl can't sit down beside driver
mamy can't drive a car
dady can drive a car
dady can go to wall with car

Ye man! dady can do anything :P

اگر احساس می کنید که به راهنما های بیشتر نیاز دارید به بهتر به راهنمای Zend Framework مراجعه کنید


البته من انسانی یه شدت فمنیست هستم ! پس این شوخی رو به دل نگیرید

برچسبها: ,

نظر:

ارسال يک نظر


POWERD BY
B  L  O  G  E  R
تمامی مطالب اینجا اگر بدرتون خورد واسه خودتون





Atom XML
Valid XHTML 1.0!
Valid CSS!
Google PageRank 
Checker - Page Rank Calculator