рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░ рдХреЛрд╣рд╛рдирд╛ 3.3 рдХрд╛ рд╡рд┐рднреЗрджрди

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

рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ

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

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрди рд╕рднреА рдЪреАрдЬреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдиреНрдп рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреАред

<?php defined('SYSPATH') or die('No direct script access.'); class Controller_Common extends Controller_Template { public $sys_mes, $auth, $session, $user, $class_id; public $user_roles = array(); public $security = array(); public $template = 'v_common'; public $layout = 'v_column_12'; public $css = array('bootstrap.min', 'style'); public $js = array('jquery-2.0.0.min', 'bootstrap.min'); public $configs = array('order_control', 'payment_method'); } 


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

рд╕рдорд╛рд░реЛрд╣ рдЬреЛ рднреЗрдж рдмрдирд╛рддрд╛ рд╣реИ рд╡рд╣ рд╣реИ _check_permission ()

 public function before() { parent::before(); #  $this->auth = Auth::instance(); $this->session = Session::instance(); $this->class_id = Get_class($this); #    if($this->auth->logged_in()) { #   $this->user = $this->auth->get_user(); #     $this->user_roles = Model::factory('User')->user_roles($this->user->id); } #    $this->_check_permission(); #   foreach($this->configs as $config) { $this->template->set_global($config, Kohana::$config->load($config)->as_array()); } } 


рднреВрдорд┐рдХрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИред

 class Model_User extends Model_Auth_User { public function user_roles($user_id) { $result = array(); $db = DB::select(array('roles.name', 'name')); # SELECT -> ROLES_USERS $db->from('roles_users'); $db->where('roles_users.user_id', '=', $user_id); # SELECT -> ROLES $db->join('roles'); $db->on('roles.id', '=', 'roles_users.role_id'); $roles = $db->execute()->as_array(); foreach($roles as $role) { array_push($result, $role['name']); } } 


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

  private function _check_permission() { $check_permission = FALSE; $config_security = Kohana::$config->load('security')->as_array(); $action = Request::current()->action(); if(isset($config_security[$this->class_id][$action])) { foreach($config_security[$this->class_id][$action] as $users_role) if(in_array($users_role, $this->user_roles) || in_array($users_role, array('public'))) $check_permission = TRUE; } if(isset($config_security[$this->class_id]['all_actions'])) { foreach($config_security[$this->class_id]['all_actions'] as $users_role) if(in_array($users_role, $this->user_roles)) $check_permission = TRUE; } if($check_permission != TRUE) exit('Access deny - 403 '); } 


рдХреЙрдиреНтАНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдпрд╣рд╛рдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХреЙрдиреНтАНрдлрд╝рд┐рдЧрд░ / рд╕рд┐рдХреНрдпреЛрд░рд┐рдЯреА рд╣реИ

рдЗрд╕рдореЗрдВ рд╣рдо рдХрд╛рд░реНрд░рд╡рд╛рдИ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ 403 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

 <?php defined('SYSPATH') or die('No direct script access.'); return array( # Order 'Controller_Orders' => array( 'index' => array('root', 'manager', 'admin'), 'by_organization' => array('root'), 'add' => array('admin', 'manager'), 'edit' => array('admin', 'manager'), # Auth 'Controller_Auth' => array( 'all_actions' => array('login'), 'login' => array('public'), ), # Organization 'Controller_Organization' => array( 'all_actions' => array('root'), ), ); 


рдирд┐рдпрдВрддреНрд░рдХ_рдСрд░реНрдбрд░реНрд╕ - рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдирд╛рдоред
рд╕реВрдЪрдХрд╛рдВрдХ - рдПрдХ рдХреНрд░рд┐рдпрд╛ рдЬреЛ рдХрд╛рдо рдХрд░рддреА рд╣реИ (рдпрджрд┐ рдЖрдк рд╕рднреА рдХреЗ рд▓рд┐рдП рдкрд╣реБрдБрдЪ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'all_actions' рд▓рд┐рдЦреЗрдВ)
рд╕рд░рдгреА ('рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ', 'рдкреНрд░рдмрдВрдзрдХ') - рдЙрди рднреВрдорд┐рдХрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА, рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред

рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдЗрд╕ рддрд░реАрдХреЗ рдкрд░ рдЖрдкрдХреА рд░рд╛рдп рдЬрд╛рдирдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред

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


All Articles