Codeigniter: как развернуть функции для контролируемых (бета) групп пользователей? - PullRequest
3 голосов
/ 03 марта 2011

Объяснение

Я работаю над сборкой веб-приложения в CodeIgniter.Поскольку я постоянно добавляю новые функции, некоторые из них могут быть нестабильными.Поэтому я хотел бы иметь способ «развернуть» эти функции в первую очередь для указанных групп.Если все пойдет хорошо, я сделаю эту функцию доступной для всего сообщества пользователей.

Решение, о котором я сейчас думаю, состоит из файла конфигурации, в котором есть массивы функций для каждой группы релизов:

alpha = array(
    "feature A" => true,
    "feature B" => true,
    "feature C" => true
    );

beta = array(
    "feature A" => true,
    "feature B" => true,
    "feature C" => false
    );

production = array(
    "feature A" => false,
    "feature B" => false,
    "feature C" => false
    );

Пользователи в моем приложении затем делятся на группы (альфа, бета, производственные), и система делает доступные функции доступными для текущего пользователя.

Эта часть «делает доступными применимые функции».«Теперь я думаю о том, чтобы сделать (некрасивую) конструкцию следующим образом:

if ($feature_array["feature A"])
{
   /* run the code for feature A */
}

С этой конструкцией важно то, что если функция распространяется на всех пользователей, этот кодбольше не нужно, но все равно будет сидеть.

Мой вопрос

Существует ли решение / стандартная настройка / библиотека для такого рода функций, и мне не нужно возвращаться и удалять эти операторы if'когда функция полностью развернута?

Ответы [ 2 ]

3 голосов
/ 03 марта 2011

Это очень просто, но взгляните на Турникеты .

0 голосов
/ 03 марта 2011

Я лично хотел бы разработать систему аутентификации на основе ролей

не уверен, что они уже есть, но, по сути, вы бы использовали таблицу с ролями, назначив каждому участнику определенную роль (или уровень пользователя, если вы предпочитаете)

тогда вы можете просто добавить соответствующие функции в свою бизнес-логику в свой контроллер / модель.

Как только функция проходит этап бета-тестирования, вы можете просто обновить роли для каждой из них, чтобы у них был доступ.

(Это довольно много работы с нуля, чтобы сделать это правильно, но в зависимости от того, насколько расширяемый вы хотите, это может стоить сделать).

Вы также можете рассмотреть ACL - CI имеет несколько существующих решений.

...