Итак, написал свой первый модуль.
Краткое описание:
- Версия Drupal 6.x (скорее всего в 7 версии будет работать некорректно);
- Обязательно наличие роли "Члены клуба" (пока зашито в код);
- В модуле реализована корректная установка и удаление схемы таблицы;
Кратко алгоритм:
- Администратор (роль "доступ к настройкам промокодов") заносит в систему случайный 9-значный код, состоящий из цифр.
- Каждому коду соответствует диапазон номеров (на данный момент вшито три диапазона для выбора, но реализованный код в принципе не зависит от жестко указанных диапазонов);
- Пользователю отправляет любым доступны образом этот промокод;
- Пользователь может самостоятельно или при помощи администратора ввести в свой профиль полученный промокод и система автоматически присвоит ему номер из соответствующего диапазона (нельзя присваивать код 13, а также реализована корректная обработка ситуации, когда свободных номеров нет);
- При корректно введенном промокоде пользователю также автоматически присваивается роль "Члены клуба";
Мысли для доработки (есть в README.txt):
- реализовать отправку сгенерированного промокода на почту или пользователю;
- переписать функцию oldguard_promocode_add(&$form_state) (функцию _oldguard_promocode_generate_code() вынести в if(! $form_state['submitted']));
- реализовать возможность переназначения номера пользователя;
- реализовать возможность освобождения номера при удалении пользователя или вручную администратором;
- показывать промокод не только при редактировании профайла, но и при просмотре;
P.S.: принимается любая критика.
Вложение | Размер |
---|---|
oldguard_promocode-0.1.zip | 5.25 КБ |
Комментарии
Название модуля "Управление промокодами для членов Старая гвардия" несколько странное. Понятно, что делалось для сайта, но выкладывание в общий доступ подразумевает причёсывание а анонимизацию
Надо сделать настройку, какую роль присваивать при успешной проверке промокода.
Зачем? Для чего это случайное число и почему его нельзя генерить автоматически?
Что за диапазоны? Почему их только три?
В чём отличие данного модуля от модуля invite?
- Есть защита от перебора? Судя по длине ключа, я смогу перебрать все доступные коды за часик
- Почему используется такой короткий пароль? Можно же генерить md5, например от от 9-значного секретного ключа, + случайная соль.
- Надо реализовать отправку кода по мылу, плюс активация по ссылке, дабы пользователь не вводил код вручную.
В коде советую все CRUD-функции работы БД выносить в отдельный блок - нагляднее и легче поддерживать/переносить.
Диапазоны и короткий код с цифрами - требование по ТЗ. Промокод не только по почте отправляют, но и будут штампиком ставить на открытках, например (отсюда и 9 знаков и обязательно цифр).
Весь изюм - именно в ручном вводе, а не автоматическом. Потому Invite не подходит. Ибо не только для регистрации, но и для уже существующих пользователей.
Про надстройку с выбором роли, спасибо, вписал в план.
Насчет защиты - как интересно путем ручного перебора можно перебрать столько комбинаций? Тем более вводится только в поле в профайле...
Ну 9 цифр за час я конечно погорячился, но всё же скриптиком можно поперебирать.
А где сам модуль?
А зачем он Вам? http://drupal.org/sandbox/softovick/1190802 - но я им давно не занимался и не поддерживаю.
Не подскажите как можно промо код и из диапазона сгенерированный код вывести во views?
Из моего модуля нельзя. Можно попробовать Table Wizard, и потом уже выводить результат в Views.