Мой первый модуль. Промокоды для пользователей сайта (клуб)

Главные вкладки

Аватар пользователя Softovick Softovick 25 октября 2010 в 14:14

Итак, написал свой первый модуль.
Краткое описание:

  • Версия Drupal 6.x (скорее всего в 7 версии будет работать некорректно);
  • Обязательно наличие роли "Члены клуба" (пока зашито в код);
  • В модуле реализована корректная установка и удаление схемы таблицы;

Кратко алгоритм:

  1. Администратор (роль "доступ к настройкам промокодов") заносит в систему случайный 9-значный код, состоящий из цифр.
  2. Каждому коду соответствует диапазон номеров (на данный момент вшито три диапазона для выбора, но реализованный код в принципе не зависит от жестко указанных диапазонов);
  3. Пользователю отправляет любым доступны образом этот промокод;
  4. Пользователь может самостоятельно или при помощи администратора ввести в свой профиль полученный промокод и система автоматически присвоит ему номер из соответствующего диапазона (нельзя присваивать код 13, а также реализована корректная обработка ситуации, когда свободных номеров нет);
  5. При корректно введенном промокоде пользователю также автоматически присваивается роль "Члены клуба";

Мысли для доработки (есть в README.txt):

  • реализовать отправку сгенерированного промокода на почту или пользователю;
  • переписать функцию oldguard_promocode_add(&$form_state) (функцию _oldguard_promocode_generate_code() вынести в if(! $form_state['submitted']));
  • реализовать возможность переназначения номера пользователя;
  • реализовать возможность освобождения номера при удалении пользователя или вручную администратором;
  • показывать промокод не только при редактировании профайла, но и при просмотре;

P.S.: принимается любая критика.

ВложениеРазмер
Иконка пакета oldguard_promocode-0.1.zip5.25 КБ

Комментарии

Аватар пользователя Dan Dan 25 октября 2010 в 17:38

Название модуля "Управление промокодами для членов Старая гвардия" несколько странное. Понятно, что делалось для сайта, но выкладывание в общий доступ подразумевает причёсывание а анонимизацию Smile

"Softovick" wrote:
Обязательно наличие роли "Члены клуба" (пока зашито в код);

Надо сделать настройку, какую роль присваивать при успешной проверке промокода.

"Softovick" wrote:
Администратор (роль "доступ к настройкам промокодов") заносит в систему случайный 9-значный код, состоящий из цифр.

Зачем? Для чего это случайное число и почему его нельзя генерить автоматически?

"Softovick" wrote:
Каждому коду соответствует диапазон номеров (на данный момент вшито три диапазона для выбора, но реализованный код в принципе не зависит от жестко указанных диапазонов);

Что за диапазоны? Почему их только три?

"Softovick" wrote:
При корректно введенном промокоде пользователю также автоматически присваивается роль "Члены клуба";

В чём отличие данного модуля от модуля invite?

- Есть защита от перебора? Судя по длине ключа, я смогу перебрать все доступные коды за часик Smile
- Почему используется такой короткий пароль? Можно же генерить md5, например от от 9-значного секретного ключа, + случайная соль.
- Надо реализовать отправку кода по мылу, плюс активация по ссылке, дабы пользователь не вводил код вручную.

В коде советую все CRUD-функции работы БД выносить в отдельный блок - нагляднее и легче поддерживать/переносить.

Аватар пользователя Softovick Softovick 25 октября 2010 в 18:09

Диапазоны и короткий код с цифрами - требование по ТЗ. Промокод не только по почте отправляют, но и будут штампиком ставить на открытках, например (отсюда и 9 знаков и обязательно цифр).
Весь изюм - именно в ручном вводе, а не автоматическом. Потому Invite не подходит. Ибо не только для регистрации, но и для уже существующих пользователей.
Про надстройку с выбором роли, спасибо, вписал в план.
Насчет защиты - как интересно путем ручного перебора можно перебрать столько комбинаций? Тем более вводится только в поле в профайле...