Как добавить уровень доступа в tank_auth

Я использую ci 2, и я видел в предыдущем посте, что вы рекомендуете tank_auth как лучшую библиотеку для аутентификации пользователя. Я скачал его, но не мог понять, как настроить уровень доступа в tank_auth.

я должен вручную мод это?

Я думал о добавлении поля group_id в таблицу пользователей и просто настроить регистрационную форму, чтобы также сохранить group_id для каждого нового пользователя, но я ненавижу изобретать велосипед, так что мой вопрос, есть ли эта настройка уже там? или я должен жесткий код это? и если нет никаких подсказок о лучшем способе сделать это, чтобы я не испортил код tank_auth?

Спасибо

1 ответ

Вы не хотите разрешать скрытое (group_id) поле в вашей форме, потому что им можно манипулировать.

Просто установите значение по умолчанию для group_id и измените его через администрацию.

ОСНОВНАЯ идея / реализация:

добавить в таблицу пользователей

`gid` smallint unsigned not null default 0, //or members default value

-

alter table `users` add index(`gid`);
alter table `users` foreign key(`gid`) references groups(`id`) on delete restrict on update restrict;

- Вы можете нормализовать столбец разрешений здесь и иметь несколько вариантов

create table `groups`(
id smallint unsigned not null auto_increment primary key,
`name` varchar(20) not null,
`permissions` varchar(255) not null, //JSON object '["read", "edit", "delete", "admin", "super"]'
created_at datetime
)engine=innodb;//or whatever engine you like

-

С верхней части моей головы

class MY_Controller extends CI_Controller{

     protected $_user;
     protected $_permissions=array();
     protected $_group;
     public function __construct()
     { 
         parent::__construct();

         //check for a user logged in
         $this->_user = ( $user ) ? $user : NULL;

         //if user, get group and permissions
         if($this->_user !== NULL)
         {
             $this->_get_group();
             $this->_get_permissions(); 
         }
     }

     public function _get_group(){
         return $this->_group = $this->_user->group->name; //need to work this bit out
     }

      public function _get_permissions(){
         return $this->_permissions = json_decode($this->_user->permissions, TRUE); 
     }


     public function can_read(){
         return in_array('read', $this->_permissions);
     }

     /// and so on etc
 }
Другие вопросы по тегам