YB рдФрд░ LDAP рдореЗрдВ RBAC рдкреНрд░рд╛рдзрд┐рдХрд░рдг


RBAC рдПрдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХреЗрдВрджреНрд░реАрдп рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкрджрд╛рдиреБрдХреНрд░рдо рдХреА рд╕рд╣реА рд╕рдордЭ рдФрд░ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде, рдЖрдк рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдмрд╣реБрдд рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдкрд╣реБрдВрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, YII рдореЗрдВ рдорд╛рдирдХ RBAC рдореИрдиреБрдЕрд▓ рдЙрддреНрддрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрд░рд╢реНрди рдЫреЛрдбрд╝рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддрд╛ рд╣реВрдВред
рдореИрдВ "рд╕рд╣реА" рдкрджрд╛рдиреБрдХреНрд░рдо рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛: рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ Yii рдФрд░ RBAC рдХреЗ рд╕рд╛рде LDAP рдкреНрд░рд╛рдзрд┐рдХрд░рдг (ActiveDirectory рд╕реЗ) рдорд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдкрд░ рдмрдЪрдд рдХреАред

рд╣рд░ рдХреЛрдИ рдЬреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд░рдЦрддрд╛ рд╣реИ, рдмрд┐рд▓реНрд▓реА рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!


рдЖрд░рдмреАрдПрд╕реА (рднреВрдорд┐рдХрд╛ рдЖрдзрд╛рд░рд┐рдд рдЕрднрд┐рдЧрдо рдирд┐рдпрдВрддреНрд░рдг) рднреВрдорд┐рдХрд╛ рдЖрдзрд╛рд░рд┐рдд рдЕрднрд┐рдЧрдо рдирд┐рдпрдВрддреНрд░рдг ред Yii рдореЗрдВ рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЖрдзрд╛рд░ рддреАрди рдореБрдЦреНрдп рд▓рд┐рдВрдХ рд╣реИрдВ:

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ YII рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдХреЗ рдкреГрд╖реНрда рдХреА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдореАрдХреНрд╖рд╛ рдХреА рд╣реИ рдФрд░ Yii рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рддрдВрддреНрд░ рдХреЗ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдкреНрд░рд╛рдзрд┐рдХрд░рдг рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╣реА рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред

рднреВрдорд┐рдХрд╛рдУрдВ рдХреА рдкрджрд╛рдиреБрдХреНрд░рдоред


рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг, рдФрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛, рдЖрд░рдмреАрдПрд╕реА рдореЗрдВ рддрддреНрд╡реЛрдВ рдХрд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рд╣реИред рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реЛрдЪрд╛ рдЧрдпрд╛ рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рднреВрдорд┐рдХрд╛рдПрдВ рдХреИрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХрд┐рддрдиреА рдмрд╛рд░ рдЖрдкрдХреЛ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛрдб рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред

рдЖрдЗрдП рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рддрддреНрд╡ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:



рдКрдкрд░ рджрд┐рдП рдЧрдП рдЖрд░реЗрдЦ рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрджрд╛рдиреБрдХреНрд░рдо рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдирд┐рдпрдВрддреНрд░рдХ рдСрдкрд░реЗрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рднреВрдорд┐рдХрд╛рдПрдБ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реМрдВрдкреА рдЬрд╛рддреА рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, YII рдЖрдкрдХреЛ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдХреБрдЫ рдФрд░ рдЬрд╛рдБрдЪрдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рднреВрдорд┐рдХрд╛ред
рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдЧрд▓рдд рд╣реИ рдФрд░ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреЗрдВрджреНрд░реАрдХреГрдд рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд╛рднреЛрдВ рдХреЛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдорд╛рдЪрд╛рд░ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рд╣рдо рдкрд╣реБрдВрдЪ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
RBAC рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рддреЗ рд╕рдордп рдкрд╣рд▓реА рдмрд╛рдд рд╣рдореЗрдВ рдпрд╣ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рдВрднрд╛рд╡рд┐рдд OPERATIONS (рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднреВрдорд┐рдХрд╛рдУрдВ рдкрд░ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдорддреМрд░ рдкрд░, рд╕рдорд╛рдЪрд╛рд░ рдХреЛ рд╣рдЯрд╛рдпрд╛ , рдмрдирд╛рдпрд╛ , рдкрдврд╝рд╛ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рд╣рдо рдЗрди рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ : рд╣рдЯрд╛рдПрдВ , рдмрдирд╛рдПрдВ , рдирдпрд╛ рдХрд░реЗрдВ , рдкрдврд╝реЗрдВрдиреНрдпреВрдЬ , рдЕрдкрдбреЗрдЯрдиреНрдпреВрдЬ ред

рдХреЛрдб рдореЗрдВ, рдЖрдк рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдСрдкрд░реЗрд╢рди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

if(Yii::app()->user->checkAccess('createNews')) { //   } // if(Yii::app()->user->checkAccess('updateNews')) { //   } 

рдСрдкрд░реЗрд╢рди рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рдж, рдЖрдк рднреВрдорд┐рдХрд╛рдУрдВ рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ (рдореИрдВ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВ, рд╣рдо рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ):

рдЙрдкрд▓рдмреНрдз рд╕рдВрдЪрд╛рд▓рди рд╕реЗ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
newsReader , newsManager , newsAuthor ред

рддрддреНрд╡реЛрдВ рдХреА рдкрджрд╛рдиреБрдХреНрд░рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧреА:

рдпреЗ рднреВрдорд┐рдХрд╛рдПрдБ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рднреВрдорд┐рдХрд╛рдУрдВ рдХрд╛ рдПрдХ рдФрд░ рдЕрдореВрд░реНрдд рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:


рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЕрдореВрд░реНрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЕрдЧрд░ рд╣рдореЗрдВ рди рдХреЗрд╡рд▓ рд╕рдорд╛рдЪрд╛рд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рднреА рдХрд╣рдирд╛ рд╣реИ, рдлреЛрдЯреЛ рдЧреИрд▓рд░реА рдореЗрдВ рдЪрд┐рддреНрд░ рдпрд╛ рд╕реНрдЯреЛрд░ рдореЗрдВ рд╕рд╛рдорд╛рдиред рдлрд┐рд░ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдРрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдиреА "рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ" рднреВрдорд┐рдХрд╛рдПрдБ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП photoReader (showPhoto) , рдлрд╝реЛрдЯреЛрдЧреНрд░рд╛рдлрд╝рд░ (showPhoto, addPhoto) , photoManager (showPhoto, addPhoto, deletePhoto) рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рднреВрдорд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ:


рдпрд╛рдиреА рдЗрд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдПрдХ рдЕрддрд┐рдерд┐ рд╕рдорд╛рдЪрд╛рд░ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рддрд╕реНрд╡реАрд░реЗрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ; рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдорд╛рдЪрд╛рд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рддрд╕реНрд╡реАрд░реЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ; рдореЙрдбрд░реЗрдЯрд░ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдлрд╝реЛрдЯреЛ рдФрд░ рд╕рдорд╛рдЪрд╛рд░ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдФрд░ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдХрд╛рд░реНрдп рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдХрд╛рд░реНрдп рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИрдВ рдЬреЛ рдЕрдзрд┐рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪрд▓рд┐рдП updateOwnNews рдЯрд╛рд╕реНрдХ рдмрдирд╛рддреЗ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╡рдВрд╢рдЬ рд╣рдо updateNews рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВрдЧреЗ ред рдХрд╛рд░реНрдп рдХреЗ рдирд╛рдо рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдЕрдкрдиреА рдЦреБрдж рдХреА рдЦрдмрд░ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдФрд░ bizRule рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред

bizRule рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХрд╛ PHP рдХреЛрдб рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрддреНрддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рдЗрд╕ рдирд┐рдпрдо рдХреЛ рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рд╣рдорд╛рд░реЗ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП bizRuleNwnews рдХрд╛рд░реНрдп рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
 $bizRule='return Yii::app()->user->id==$params["news"]->authID;'; 

рдпрджрд┐ рд╣рдо рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд▓реЗрдЦрдХ рдХреА рдЖрдИрдбреА рд╡рд░реНрддрдорд╛рди рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдЪрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдПрдХ рд╡реНрдпрд╛рдкрд╛рд░ рдирд┐рдпрдо рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдЪрд╛рд░ рдЖрдЗрдЯрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

 $params=array('news'=>$post); if(Yii::app()->user->checkAccess('updateNews',$params)) { //   } 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп ( updateOwnNews ) рдХреА рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдкрдбреЗрдЯрдиреНрдпреВрдЬрд╝ рдСрдкрд░реЗрд╢рди (рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ рд╕рдмрд╕реЗ рдирд┐рдЪрд▓рд╛ рддрддреНрд╡)ред

рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЬреЛ рдХрд┐ рдХрд╛рд░реНрдп рдЕрджреНрдпрддрди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рджред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрди рдЧрдпрд╛:


Yii рдиреАрдЪреЗ рд╕реЗ рдЕрднрд┐рдЧрдо рдирд┐рдпрдВрддреНрд░рдг рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ рдФрд░ рдкрджрд╛рдиреБрдХреНрд░рдо рдКрдкрд░ рдЬрд╛рдПрдЧрд╛, рдЕрд░реНрдерд╛рддреНред updateNews рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВрдЧреЗ, рдлрд┐рд░ updateOwnNews рдкрд░ рдЬрд╛рдПрдБред рдЪреЗрдХ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ, Yii рдЬрд╛рдБрдЪ рдХрд░реЗрдЧрд╛: рдпрджрд┐ рдмрд┐рдЬрд╝рд░реБрд▓реЗ рдирд┐рдпрдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рд╣реИ, рддреЛ рдпрд╣ рдЪреЗрдХрдСрдлрд╝ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ред

рдПрдХ рдЪреЗрдХ рдХреЛ рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



рдЖрд░реЗрдЦ 3 рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рджреГрд╢реНрдп рджрд┐рдЦрд╛рддрд╛ рд╣реИ:
рдкрд╣рд▓рд╛ рдкрд░рд┐рджреГрд╢реНрдп рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдХ рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреА рдЦрдмрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рдХреА рдУрд░ рдЬрд╛ рд░рд╣рд╛ рдЪреЗрдХ рдЕрдк рдЕрдкрдбреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЪреВрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рд╕рдорд╛рди рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИред

рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдПрдХ рдордзреНрдпрд╕реНрде рдХреА рднреВрдорд┐рдХрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреА рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдХреЛрдИ рдЕрдкрдбреЗрдЯрдСрдирдПрдиреНрдпреВрдЬ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдХреЗрд╡рд▓ рдЕрдкрдбреЗрдЯрдиреНрдпреВрдЬ рдСрдкрд░реЗрд╢рди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИред
рд╕рддреНрдпрд╛рдкрди рд╕рдлрд▓ рд╣реИред

рддреАрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓реЗрдЦ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рдФрд░ updateOwnNews рдЪрд░рдг рдореЗрдВ рдЪреЗрдХ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ bizRule рдХрд╛рд░реНрдпред

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

рдпрджрд┐ рдПрдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдЖрдк рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЪреЗрдХ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рддреЛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЖрдк рдЧрд▓рдд рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ - рдЖрдкрдХреЛ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд╕рдВрдЧрдарди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
 if(Yii:app()->user->checkAccess('moderator') && Yii:app()->user->checkAccess('administrator')) { //delete smth } 

рдпрд╣ рдЧрд▓рдд рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдЖрдк рдХреЗрдВрджреНрд░реАрдп рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░ рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рдирдИ рд╢рд░реНрдд рдЬреЛрдбрд╝рдиреА рд╣реЛрдЧреАред

рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рддрд░реАрдХреЗ


рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ 2 рддрд░реАрдХреЗ рд╣реИрдВред
рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдЪрд╛рд░ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред рдпрд╣ рд╕реАрдбрдмреНрдпреВрд╕рд░ рдШрдЯрдХ рдХрд╛ рдЪреЗрдХрдЖрдЗрдЯ () рддрд░реАрдХрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рдирд┐рдпрдВрддреНрд░рдХ "рдореЛрдЯреЗ рдирд╣реАрдВ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ", рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рдкрд╣рд▓реВ-рдЙрдиреНрдореБрдЦ рддрд░реАрдХрд╛ рд╣реИред

рд╡рд┐рдзрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд▓рд┐рдП 'accessControl' рдлрд┐рд▓реНрдЯрд░ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

рдпрд╣ рдлрд╝рд┐рд▓реНрдЯрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рднреА рдЧрдВрджреЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛: рдпрд╣ рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреГрд╖реНрда 403 рдкрд░ рднреЗрдЬреЗрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдХреЛрдб рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╕рдорд╛рдЪрд╛рд░ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 class NewsController extends CController { тАж public function filters() { return array( 'accessControl', ); } public function accessRules() { return array( array('allow', 'actions'=>array('create'), 'roles'=>array('createNews'), ), array('allow', 'actions'=>array('delete'), 'roles'=>array('deleteNews'), ), array('allow', 'actions'=>array('view'), 'roles'=>array('readNews'), ), array('allow', 'actions'=>array('update'), 'roles'=>array('updateNews'), ), ); } ... } 

AccessRules рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ , рд╣рдо 4 рдирд┐рдпрдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рд╕рд░рдгреА рд╣реИред рдЬрд╣рд╛рдВ рдХреНрд░рд┐рдпрд╛рдПрдБ рдХреБрдВрдЬреА рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рд╣рдо рдХрд┐рди рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рднреВрдорд┐рдХрд╛рдПрдБ рдХрд┐рди рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред

рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдХреБрдВрдЬреА рдХреЛ 'рднреВрдорд┐рдХрд╛' рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдк рд╡рд╣рд╛рдВ рдХрд┐рд╕реА рднреА рдкреНрд░рд╛рдзрд┐рдХрд░рдг рддрддреНрд╡ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рд╡рд╣ рдПрдХ рдСрдкрд░реЗрд╢рди рд╣реЛ рдпрд╛ рдПрдХ рдХрд╛рд░реНрдп рд╣реЛред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ, рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╡реЗ рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЕрдВрдХрд┐рдд рд╣реИрдВред

рдпрд╣ рдлрд╝рд┐рд▓реНрдЯрд░ рд╣рдореЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ "рдкрд╛рд╕-рдереНрд░реВ" рдХреЛрдб рдХреА рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рд╣рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдЪрд╛рд░ рдХреЛ 'updateNews' рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЕрдкрдбреЗрдЯ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд bizRnNews рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░реЗред

рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдк рдлрд╝рд┐рд▓реНрдЯрд░ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдХреИрд╕реЗ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛрдб рдореЗрдВ рдЬрд╛рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рд╡рд╣рд╛рдВ рдЭрд╛рдВрдХрдирд╛ рдкрдбрд╝рд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╕рдВрд╕реНрдХрд░рдг 1.1.11 рд╕реЗ рдРрд╕рд╛ рдЕрд╡рд╕рд░ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред

рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдПрдХ рдирд┐рдпрдо рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:

 'roles'=>array('newsUpdate'=>array('news'=>$news)) 

рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдорд╕реНрдпрд╛рдПрдВ рдЦрддреНрдо рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЕрднреА рддрдХ рдПрдХ рд╕рдорд╛рдЪрд╛рд░ рд╡рд╕реНрддреБ рдирд╣реАрдВ рдмрдирд╛рдИ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдорд╛рдзрд╛рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
 protected $model; public function accessRules() { return array( ... array('allow', 'actions' => array('update'), 'roles' => array( 'updateNews' => array( 'news' => $this->news )), ), ... ); } public function getNews() { if ($this->actionParams['id']) { return $this->loadModel($this->actionParams['id']); } } public function loadModel($id) { if ($this->model === null) $this->model = News::model()->findByPk($id); if ($this->model === null) throw new CHttpException(404, 'The requested page does not exist.'); return $this->model; } 

рдпрд╣рд╛рдВ рдореИрдВ рд╕рдорд╛рдЪрд╛рд░ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреЗрдЯреНрдЯрд░ рдмрдирд╛рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдореБрдЭреЗ рд▓реЛрдбрдореЙрдбрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдорд╛рдЪрд╛рд░ рдореЙрдбрд▓ рдорд┐рд▓рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрдИ рдмрд╛рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ (рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬрдм рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реБрдП, рдФрд░ рдлрд┐рд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рд╣реА), рдореИрдВрдиреЗ рдПрдХ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ $ рдореЙрдбрд▓ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдореЙрдбрд▓ рдХреЛ рдХреИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рдореИрдВ рд▓реЛрдбрдореЙрдбрд▓ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореЙрдбрд▓ рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЖрдзрд╛рд░ рд╕реЗ рдирд╣реАрдВред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рд╡рд┐рдзрд┐ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ рдпрджрд┐, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдкрдХреЛ рдЙрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЪреЗрдХрдПрд╕реЗрдЯ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ;

RBAC Yii рдФрд░ LDAP


LDAP рд▓рд╛рдЗрдЯрд╡реЗрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯреНрд░реА рдПрдХреНрд╕реЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ, "рдПрдХ рд▓рд╛рдЗрдЯрд╡реЗрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯреНрд░реА рдПрдХреНрд╕реЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓," рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо ActiveDirectory рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред

PHP рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд LDAP рд╕рдорд░реНрдерди рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдХрдИ рддреИрдпрд╛рд░ рдШрдЯрдХ рд╣реИрдВ рдЬреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ adLdap рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ ActiveDirectory рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ OOP API рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ Yii рдХреЛ adLdap рд╕реЗ рдЬреЛрдбрд╝рд╛, рдЕрд░реНрдерд╛рдд:
 //protected/config/main.php 'components' => array( ... 'ldap' => array( 'class' => 'LdapComponent', 'baseDn' => 'DC=example,DC=org', //example.org 'accountSuffix' => '@example.org', 'domainControllers' => array('dc.example.org'), 'adminUsername' => 'username', 'adminPassword' => 'password' ), .. ) 

LdapComponent рд╡рд░реНрдЧ рд╣реА:

 //protected/components/LdapComponent.php Yii::import('application.vendors.adLDAP.adLDAP'); class LdapComponent extends adLDAP { public $baseDn; public $accountSuffix; public $domainControllers; public $adminUsername; public $adminPassword; public function __construct() { } public function init() { parent::__construct(); } } 

AdLdap рдЗрд╕рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рд╡рд╛рдИрдЖрдИрд╡рд╛рдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЗрд╕ рдШрдЯрдХ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЙрдирдХреА рджреГрд╢реНрдпрддрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдмрджрд▓рдХрд░ рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ (рддрд╛рдХрд┐ Yii рдШрдЯрдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХреЗ) рдФрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдЗрдирд┐рдЯ () рд╡рд┐рдзрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛, рддрд╛рдХрд┐ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреЛ AFTER рдХрд╣рд╛ рдЬрд╛рдПред рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдлрд╝реАрд▓реНрдб рднрд░реЗ рдЧрдП рд╣реИрдВ)ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЗрд╕ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ Yii рдореЗрдВ рдЕрдиреНрдп рд╕рднреА рдХреА рддрд░рд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 Yii::app()->ldap 

LDAP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Yii рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдорд╛рдирдХ рдШрдЯрдХ рдмрдирд╛рдиреЗ рд╣реЛрдВрдЧреЗ: UserIdentity рдФрд░ WebUser :

 //protected/components/LdapIdentity.php class LdapIdentity extends CUserIdentity { protected $_id; /** * Authenticates a user via LDAP. * @return boolean whether authentication succeeds. */ public function authenticate() { $ldap = Yii::app()->ldap; $result = $ldap->authenticate($this->username, $this->password); $ldapUserInfo = $ldap->user()->infoCollection($this->username, array("mail", "displayname")); $this->setState('fullname', $ldapUserInfo->displayname); $this->setState('email', $ldapUserInfo->mail); if (!$result) { $this->errorCode = self::ERROR_USERNAME_INVALID; } else { $dbUser = User::model()->findByAttributes(array('ldap' => $this->username)); if (!$dbUser) { $dbUser = new User(); $dbUser->ldap = $this->username; $dbUser->save(); } $this->_id = $dbUser->primaryKey; $this->errorCode = self::ERROR_NONE; } return !$this->errorCode; } public function getId() { return $this->_id; } } 

рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CUserIdentity рд╡рд░реНрдЧ рдХреА рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдо ADL рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ AD рдореЗрдВ рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рд╕рдлрд▓ рд╣реЛ, рддреЛ рд╣рдо рдЙрд╕рдХрд╛ рдирд╛рдо рдФрд░ рдИрдореЗрд▓ рд╕реНрдерд╛рдпреА рднрдВрдбрд╛рд░рдг рдореЗрдВ рдбрд╛рд▓ рджреЗрдВрдЧреЗред

LDAP рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рд░рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рд╕рдлрд▓ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдмрд╛рдж, рдпрд╣ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ: рдХреНрдпрд╛ рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ, рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдпрд╣ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

 //protected/components/LdapUser.php class LdapUser extends CWebUser { protected $_groups = null; protected $_model; /** * * @return type */ public function getGroups() { if ($this->_groups === null) { if ($user = $this->getModel()) { $this->_groups = Yii::app()->ldap->user()->groups($user->ldap); } } return $this->_groups; } /** * * @return User */ public function getModel() { if (!$this->isGuest && $this->_model === null) { $this->_model = User::model()->findByPk($this->id); } return $this->_model; } } 

LdapUser рд╡рд░реНрдЧ рдорд╛рдирдХ рд╕реЗ рд▓рдЧрднрдЧ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рд╕рд┐рд╡рд╛рдп LdapUser :: getGroups () рдХреЗред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рднреА рд╕рдореВрд╣реЛрдВ рдХреЗ AD рд╕реЗ рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИред

рдореИрдВрдиреЗ Yii рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ ActiveDirectory рднреВрдорд┐рдХрд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
рдпрд╛рдиреА рд╣рдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рднреВрдорд┐рдХрд╛рдПрдБ рдирд╣реАрдВ рд╕реМрдВрдкреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╕рдореВрд╣реЛрдВ рдХреЛред рдФрд░ AD рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕ рд╕рдореВрд╣ рдХреЛ рдХрд┐рд╕рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдкреЛрд░реНрдЯрд▓реЛрдВ рдФрд░ рдЕрдиреНрдп рдЖрдВрддрд░рд┐рдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рд┐рдВрдЯрд░, рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдФрд░ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рд▓рдп рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рддреБрд░рдВрдд рдХреЙрд░реНрдкреЛрд░реЗрдЯ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдореЗрдВ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдЗрд╕реА рд╕рдордп, рдЖрдИрдЯреА рд╡рд┐рднрд╛рдЧ рдХреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЛ рдХреБрдЫ рднреА рд╕рдордЭрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╡реЗ рдмрд╕ рдЕрдкрдирд╛ рдХрд╛рдо "рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣" рдХрд░рддреЗ рд╣реИрдВред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рднреВрдорд┐рдХрд╛рдПрдБ рд╕реМрдВрдкрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ CPhpAuthManager рд╡рд░реНрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛:

 class PhpAuthManager extends CPhpAuthManager { public function init() { //      auth.php   config  if ($this->authFile === null) { $this->authFile = Yii::getPathOfAlias('application.config.auth') . '.php'; } parent::init(); //          guest. if (!Yii::app()->user->isGuest) { //    AD     $existingRoles = $this->getRoles(); if (Yii::app()->user->groups) { foreach (Yii::app()->user->groups as $group) { if ($existingRoles[$group]) { $this->assign($group, Yii::app()->user->id); } } } } } } 

рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ, рд╣рдо рдЙрди рд╕рдореВрд╣реЛрдВ рдХреА рд╕реВрдЪреА рд▓реЗрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИ, рдЬрд╛рдБрдЪ рдХрд░реЗрдВ: рдХреНрдпрд╛ рдЙрд╕реА рдирд╛рдо рдХреА рднреВрдорд┐рдХрд╛ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рднреВрдорд┐рдХрд╛ рд╕реМрдВрдкреЗрдВред

LDAP рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ:

  ... /************************************ ***************ROLES**************** ************************************/ 'newsReader' => array( 'type' => CAuthItem::TYPE_ROLE, 'description' => '', 'bizRule' => NULL, 'data' => NULL, 'children' => array( 0 => 'readNews', ), ), 'newsAuthor' => array( 'type' => CAuthItem::TYPE_ROLE, 'description' => '', 'bizRule' => NULL, 'data' => NULL, 'children' => array( 'newsReader', 'createNews', 'updateOwnNews', 'deleteOwnNews' ), ), 'newsManager' => array( 'type' => CAuthItem::TYPE_ROLE, 'description' => '', 'bizRule' => NULL, 'data' => NULL, 'children' => array( 'newsReader', 'createNews', 'updateNews', 'deleteNews', ), ), // 'requestCreator' => array( 'type' => CAuthItem::TYPE_ROLE, 'description' => '', 'bizRule' => NULL, 'data' => NULL, 'children' => array( 0 => 'createRequest', ), ), 'requestManager' => array( 'type' => CAuthItem::TYPE_ROLE, 'description' => '', 'bizRule' => NULL, 'data' => NULL, 'children' => array( 'createRequest', 'viewRequests', 'manageRequests', ), ), /************************************ **********ROLES ASSIGMENTS********** ************************************/ 'developers' => array( 'type' => CAuthItem::TYPE_ROLE, 'description' => '', 'bizRule' => NULL, 'data' => NULL, 'children' => array( 'newsManager', 'requestManager', ), ), 'departamentBoss'=> array( 'type' => CAuthItem::TYPE_ROLE, 'description' => '', 'bizRule' => NULL, 'data' => NULL, 'children' => array( 'requestCreator' , ), ), 

рд░реЛрд▓ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рд╣рдо "рдордзреНрдпрд╡рд░реНрддреА" рднреВрдорд┐рдХрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рд░реЛрд▓ рдЕрд╕реЗрдВрдмрд▓реНрд╕ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рд╣рдо AD рд╕реЗ рд╕рдореВрд╣реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдордзреНрдпрд╡рд░реНрддреА рднреВрдорд┐рдХрд╛рдПрдБ рд╕реМрдВрдкрддреЗ рд╣реИрдВред

рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдЗрд╕ рддрд░рд╣ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП, рд╕рдорд╛рдЪрд╛рд░ (newsManager) рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (requestManager) рдХреЗ рд╕рд╛рде рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреА, рдФрд░ рдбрд┐рдкрд╛рд░реНрдЪрд░рдмреЙрд╕ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖


рдпрджрд┐ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП рддреЛ Yii рдореЗрдВ рднреВрдорд┐рдХрд╛ рддрдВрддреНрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рдЪреАрд▓рд╛ рд╣реИред
рднрд╡рд┐рд╖реНрдп рдХреА рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ GUI рднреВрдорд┐рдХрд╛ рдкреНрд░рдмрдВрдзрди рд╕рдорд╛рдзрд╛рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдпрд╛ рдЕрдиреБрдХреВрд▓рди рд╢рд╛рдорд┐рд▓ рд╣реИ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде, рд╕рд┐рд╕реНрдЯрдо рднреНрд░рдорд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд▓реЗрдЦрди рдХреА рдорд╛рддреНрд░рд╛ рдЕрдиреБрдЪрд┐рдд рд╣реИред
рдореИрдВ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХрд╛ рдЖрдЧреНрд░рд╣ рдХрд░рддрд╛ рд╣реВрдВ: рдЙрдиреНрд╣реЛрдВрдиреЗ Yii рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ рд╕реЗ рдХреНрдпрд╛ рд╕реБрдЭрд╛рд╡ рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ?

рдФрд░ рдХреНрдпрд╛ рдкрдврд╝реЗрдВ:


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


All Articles