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

объяснение

Я работаю над созданием веб-приложения в 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 ответа

Решение

Это очень просто, но взгляните на Turnstyles.

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

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

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

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

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

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

Другие вопросы по тегам