Zend рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛ред рднрд╛рдЧ рддреАрди: Zend_Acl


рдЖрдЬ рд╣рдо рдХрдИ рднреВрдорд┐рдХрд╛рдУрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╡рд╛рд▓реА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП Acl рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВрдЧреЗред

рд╣реИрдмрд░реВрд╕рд░ рдПрдиреЗрдХреНрд╕реАрд░рд╛рдЗрдб рдиреЗ рдЗрд╕ рддрд░рд╣ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛:
рдирд┐рдореНрди рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░ рдореМрдЬреВрдж рд╣реИрдВ: рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рддрдХ рдкрд╣реБрдБрдЪ рдХреЗ рд╕рд╛рдеред рдФрд░ 20-30 рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ, 5 рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХред рд╕рдмрдХреА рдкрд╣реБрдВрдЪ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИред рдЕрд░реНрдерд╛рддреН, рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ 2-3 рдЕрдиреБрднрд╛рдЧ рд╣реИрдВ, рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рд╕рднреА 20 рд╣реИрдВред рд╕рднреА рдореЗрдиреВ рдЖрдЗрдЯрдо рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ - рд╕рд╛рдЗрдЯ рдкрд░ рдкрдВрдЬреАрдХреГрдд рд╣реИред рдлреЛрдЯреЛ рдПрд▓реНрдмрдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд┐рдирд╛ рдХреИрдкреНрдЪрд╛ рдХреЗ рд╕рдорд╛рдЪрд╛рд░реЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрджрд┐ред + рд╡рд╣ рд╕рдм рдЬреЛ рдЕрддрд┐рдерд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ - рдХреИрдЯрд▓реЙрдЧ рдореЗрдВ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреГрд╖реНрда рд╣реИ, рдЬреЛ рдЦрд░реАрджреЗ рдЧрдП рдкреИрдХреЗрдЬ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ - рдЖрдкрдХреЗ рдЦрд╛рддреЗ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЖрдЗрдЯрдоред
рдЦреИрд░, рдПрдХ рдЕрддрд┐рдерд┐ рдЬреЛ рд╕рдм рдХреБрдЫ рдЕрд╕реАрдорд┐рдд рд░реВрдк рд╕реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИред рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ - рдХреИрдкреНрдЪрд╛ рдХреЗ рд╕рд╛рдеред
рдЕрднреА рднреА рд╕рд▓рд╛рд╣рдХрд╛рд░ рд╣реИрдВ - рд╡реЗ рдкрд░рд╛рдорд░реНрд╢ рдореЗрдВ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрджреНрдпрдо рдФрд░ рд╕рд▓рд╛рд╣рдХрд╛рд░ - рдХреЛрдИ рдкрдВрдЬреАрдХрд░рдг рдирд╣реАрдВ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред + рдлрд┐рд░ рд╕реЗ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рднреА рдЯреЗрдмрд▓ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВ - рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдЕрд▓рдЧ - рдЙрджреНрдпрдо, рдЕрд▓рдЧ - рд╕рд▓рд╛рд╣рдХрд╛рд░ред

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рднреВрдорд┐рдХрд╛рдУрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░реЗрдВрдЧреЗ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдФрд░ рднреВрдорд┐рдХрд╛рдУрдВ рдХреА рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдмрдирд╛рдПрдВрдЧреЗ:

рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рдВрд╕рд╛рдзрди рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ рдКрдкрд░реА рднрд╛рдЧ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд╕рд╛рде рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдореЗрд▓ рдЦрд╛рдПрдЧрд╛ред рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо Admin1-N, CompanyPackage1-N рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рд╣рдорд╛рд░реА рд╕реВрдЪреА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЕрдореВрд░реНрдд рд╕рдВрд╕рд╛рдзрди рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрддрд┐рдерд┐ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрди рдФрд░ рд╕рднреА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдФрд░ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдкреЗрдбрд╝ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдЬреЛ рдЙрд╕ рдкреЗрдбрд╝ рдХреЗ рдирд┐рдЪрд▓реЗ рдиреЛрдбреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЪреМрд░рд╛рд╣реЗ рд╣реЛрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Admin1 рдФрд░ Admin2 рдореЗрдВ рд╕рдорд╛рдЪрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрди рдФрд░ Zend_Acl рд╕рдВрд╕рд╛рдзрди рдкреЗрдбрд╝реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛ рд╕рдХрддреА рд╣реИ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХрдИ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, Admin1-N, CompanyPackage1-N рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЕрдкрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рд╕рдВрд╕рд╛рдзрди рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛, рдЕрдм рд╣рдо рд╕реАрдзреЗ Acl рдмрдирд╛рдПрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Zend_Acl рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ:
<?php class Acl extends Zend_Acl { public function __construct() { //   $this->addRole('guest'); $this->addRole('user', 'guest'); $this->addRole('admin', 'user'); $this->addRole('company', 'user'); $this->addRole('company-package-1', 'company'); $this->addRole('company-package-2', 'company'); $this->addRole('company-package-3', 'company'); // ... $this->addRole('admin-1', 'admin'); $this->addRole('admin-2', 'admin'); // ... $this->addRole('admin-5', 'admin'); //  // //   ! $this->add(new Zend_Acl_Resource('guest_res')); //    ,    guest_res $this->add(new Zend_Acl_Resource('add-comments-with-captcha'), 'guest_res'); //   ! $this->add(new Zend_Acl_Resource('user_res')); //    ,    user_res $this->add(new Zend_Acl_Resource('add-comments'), 'user_res'); //   ! $this->add(new Zend_Acl_Resource('admin_res')); //      ,    admin_res $this->add(new Zend_Acl_Resource('admin-tools-list'), 'admin_res'); //   ! $this->add(new Zend_Acl_Resource('company_res')); //      ,    company_res $this->add(new Zend_Acl_Resource('show-company-statistics'), 'company_res'); //      ,    $this->add(new Zend_Acl_Resource('advertise')); $this->add(new Zend_Acl_Resource('add-company')); // , -   $this->deny(null, null, null); $this->allow('guest', 'guest_res', 'show'); $this->allow('user', 'user_res', 'show'); $this->allow('admin','admin_res', 'show'); $this->allow('company','company_res', 'show'); //        $this->allow('company-package-1','advertise', 'show'); $this->allow('admin-1','add-company', 'show'); } } 

рдФрд░ рддреБрд░рдВрдд рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ:
 echo $acl->isAllowed('guest', 'add-comments-with-captcha', 'show')?'yes':'no'; // yes echo $acl->isAllowed('guest', 'add-comments', 'show')?'yes':'no'; // no echo $acl->isAllowed('admin-1', 'add-company', 'show')?'yes':'no'; // yes echo $acl->isAllowed('company-package-2', 'advertise', 'show')?'yes':'no'; // no 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдФрд░ рдПрдХ рд╢реЛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА, рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреГрд╖реНрда рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рдЗрд╕ рддрдереНрдп рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрдВрдкрдиреА рдкреИрдХреЗрдЬ рдФрд░ рдкреНрд░рд╢рд╛рд╕рдХ рдЬреЛрдбрд╝реЗ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рд╕рдордп рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рдпрд╛ рддреЛ рдорд╛рдВрдЧ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ Acl рд╡рд░реНрдЧ рдХреЗ рдХреНрд░рдордмрджреНрдз рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореЗрдореЗрдХрдЯреЗрдб)ред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЖрдкрдХрд╛ рд╣реИ, рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред
рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ , рдореИрдВрдиреЗ рдЬрд╛рдВрдЪ рдХреА рдХрд┐ рдЖрдк рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ "рдХрдВрдЯреНрд░реЛрд▓рд░ / рдПрдХреНрд╢рди" рдЬреИрд╕реЗ рддрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрд╕реАрдПрд▓ рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред


Source: https://habr.com/ru/post/In122469/


All Articles