2013-04-01 5 views
0

у меня есть база данных со следующими полями:Реализовать динамически назначаемые роли для групп пользователей

  • ID
  • Имя
  • Фамилия
  • Email
  • Телефон
  • Адрес
  • Сообщение
  • ...

Чтобы все было просто, допустим, у меня три группы пользователей - пользователь, суперпользователь и администратор.

Я ищу лучший дизайн (разработка PHP-приложения на основе CodeIgniter), которые позволяют администратору определять поле зрения (группа пользователей A должна иметь доступ к полям X, Y, Z) для разных групп пользователей , а также сам пользователь должен иметь возможность выбирать поля для просмотра (из его группы разрешено).

И это должно быть происходить на внутреннем интерфейсе, не FRONTEND ..

Любой инструктивный?

С уважением, Крис

+0

Этот вопрос не является конструктивным. Он открыт для обсуждения, который не подходит хорошо. Вы читали [FAQ] (http://stackoverflow.com/faq)? – Leri

+0

для этой цели вам следует создать другую таблицу с именами ролей и в этой (пользовательской) таблице добавить внешний ключ group_id –

ответ

0

Вероятно, вы найдете несколько approachs к этой проблеме. Это зависит от требований и того, как функциональность подвергается воздействию и распространяется в ваших модулях.

В моем случае контроль доступа был дан на контроллерах основе, поэтому я определил абстрактные контроллеры, которые могут проверить доступ в конструкторе, ре:

class User_Controller extends CI_Controller { 

    public function __construct() 
    { 

     parent::__construct(); 

     $this->auth->is_logged_in() || RedirectToLogin(); 
    } 
} 

class SuperUser_Controller extends User_Controller { 

    public function __construct() 
    { 

     parent::__construct(); 

     $this->auth->is_superuser() || RedirectToBadUser(); 
    } 
} 

class Admin_Controller extends User_Controller { 

    public function __construct() 
    { 

     parent::__construct(); 

     $this->auth->is_admin() || RedirectToBadUser(); 
    } 
} 

вы должны решить is_logged_in, is_superuser() и is_admin(), основанные на ваших спецификациях, , тогда сделайте свои контроллеры басами на одном из них в зависимости от требуемого уровня.

Во всяком случае, ничто не мешает вам добавить $this->auth->is_superuser() || RedirectToBadUser(); внутри метода, предоставляя необходимую гранулярность.