Drupal + сервисы Google, добавление дополнительных полей к форме регистрации

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

Аватар пользователя DSolutions DSolutions 31 января 2008 в 22:03

Начну с небольшой преамбулы. Полтора месяца назад я решил найти вакансию (местную), связанную с Drupal. Разместил соответствующее объявление в «банке вакансий и резюме» и начал ждать. На следующий день мне позвонил человек и предложил совместно поработать – работа заключалась в переносе существующего проекта на cms Drupal. Как оказалось позже, этим проектом оказался портал «Телеграф» (он же Telegraf.by), а звонящим был его управляющий – Ян Розум (Yan Rozum). На следующий день я посетил эту «чудо-контору», где разузнал требования к выполняемой работе и кое какую другую информацию. В итоге я выяснил, что в перспективе необходимо решить две задачи: задача первая – это интеграция Drupal и сервиса Gmail и задача вторая – построение социальной сети. Сейчас я хочу рассказать о первой задаче, т.к. до второй по определенным обстоятельствам мне не довелось добраться.

Каким образом можно использовать Gmail в собственном проекте? Дело в том, что Google предоставляет такую возможность как «Использование Gmail в своем домене». Объясню проще: допустим вы имеете свой проект с условным именем example.com и вы желаете открыть собственный почтовый сервис, т.е. пользователь «Николай», зарегистрировавшись у вас получил бы в итоге почтовый ящик с именем Nikolay@example.com. Но у вас нет желания заниматься развертыванием и поддержкой такой почтовой службы. При желании вы можете «договориться» с Google и получить возможность регистрировать новые почтовые аккаунты (собственно это не только почтовые аккаунты) на Google, но уже под собственным доменным именем – в итоге пользователь получит такое же имя (Nikolay@example.com, а не Nikolay@gmail.com), но со всеми возможностями Google (объем почтового ящика от 6GB, отличный анти-спам фильтр и др.) – т.е. как если бы пользователь сам зарегистрировался на Google. Эта возможность называется Provisioning. В реальности Provisioning дает обширные возможности для работы с вашими пользовательскими аккаунтами на Google. Для внедрения Provisioning в Drupal имеется специальный готовый модуль (googleappsapi + googleappsusers), который работает лишь частично, поэтому мне пришлось написать свой собственный модуль который использует Zend Gdata. Модуль довольно простой и в тоже время функциональный.
На уровне кода он делает следующее:

  1. Вставляет в форму регистрации нового пользователя дополнительные поля (Google для регистрации также требует Имя и Фамилию); вставляет аналогичные дополнительные поля в форму изменения пользовательских параметров; делает проверку на вводимые значения;
  2. Регистрирует пользовательский аккаунт на Google при регистрации нового пользователя в Drupal; удаляет пользовательский аккаунт на Google при удалении его в Drupal; обновляет параметры пользователя на Google при изменении их пользователем в Drupal.

Этот модуль также является неплохим примером (во всяком случае я так надеюсь) того каким образом можно добавлять собственные поля в форму регистрации новых пользователей (это не модуль Profile – у него другие задачи).
Прикрепляю здесь этот модуль (в нем имеется много интересных решений, на поиск которых ушло порядочное количество времени). Модуль называется TELEGRAF_ModPack. Также прикрепляю здесь и сборку Set_Zend+Gdata – это набор тестов для запуска Gdata (по непонятным причинам Zend Gdata отказывается сразу работать – выдается ошибка «captcha token required», но traceGdata.php из этой сборки решает эту задачу).

Также в плане интеграции почты есть еще и вторая очень интересная возможность. Если пользователь при просмотре своего почтового ящика предпочитает использовать веб-интерфейс, то делать это он может прямо через ваш проект – вы можете разместить на своей странице Гаджет для работы с почтой и пользователь увидит (после аутентификации) свой почтовый ящик прямо в контексте вашего проекта. Эта возможность реализуется через «Single Sign-On Service».

Теперь немого о том почему я не дошел до второго этапа (внедрения социальной сети) и почему я собственно пишу здесь обо всем об этом. Начнем с конторы Телеграф. Что она из себя представляет – сидят в комнате 15-20 человек, ищут и интересные новости и переразмещают их у себя (т.е. попросту эксплуатируют чужой контент). Также они занимаются и хостингом (реселлинг – т.е. перепродажа) – Swisshost.by (швейцарский хостинг в Белоруссии) – это тоже они. Посещаемость этого проекта – 0.5млн. человек в месяц (на мой субъективный взгляд не много и не мало).
Теперь об условиях. Возможно кому-нибудь в будущем доведется увидеть предложения работы от них, поэтому хочу рассказать по поводу оценки ими проделанной работы. Когда я пришел в первый раз к заказчику, я договорился с ним на оклад (не! сдельно). Договорились на 500$ в месяц. Сумма мелочная, т.к. даже в Белоруссии php-программист уже может найти оклад и в 800$-1300$, но меня это не сильно заботило, т.к. моя главная цель была найти вакансию связанную с Drupal. Поначалу все было нормально. Прошло полмесяца и часть работы была выполнена – заказчика все устраивало. Далее возникли сложности с Single Sign-On и хостингом – как оказалось, швейцарский хостинг в реальности был весьма посредственным (один выделенный сервер упал в самый неподходящий момент, а второй так и не удалось нормально настроить). Все проблемы мы совместно с администратором все-таки решили, но время было упущено (не! по моей вине конечно). Попутно я пытался взять аванс (на учебу срочно требовались деньги), прошло уже пол месяца и по договоренности ранее я рассчитывал получить его вовремя. Но управляющий вдруг не с того ни с сего куда то пропал – телефон отвечал «абонент находиться вне зоны действия сети» (От управляющего я научился одной интересной «вещи». Если вам нужно сделать так что бы вас никто не смог беспокоить по телефону, но при этом вы не желаете выключать телефон, сделайте так: включите переадресацию на несуществующий номер – звонящий будет всегда получать ответ «абонент находиться вне зоны доступа», а вы при этом сможете свободно звонить). Настал момент когда прошел ровно месяц (аванс я так и не получил – две недели не мог связаться). К этому времени SSO так еще и не удалось внедрить и тут мне заказчик заявляет «Знаешь, я рассчитывал внедрить две задачи (Provisioning и SSO) за один месяц, а ты выполнил только первую и частично вторую. Давай договоримся так – сейчас (после пришествия месяца) я тебе даю 50%, а остальную часть ты получишь когда доделаешь SSO. Может я и поступаю несколько буржуазно, но больше я ничего не могу тебе предложить.». Я был в шоке. Такого «скотства» я еще не видел – работать еще две недели за спасибо... Он планировал, а я по его мнению не вписался в его планы (хотя я не! нанимался на сдельную работу)... Конечно после этого я не стал ничего доделывать – я просто взял часть денег и стал тянуть время (плевать на остаток – принципы дороже). В итоге Телеграф потерял два месяца + недописанный модуль с которым врядли можно что то сделать.
Также размещаю здесь результат своей работы (т.е. «сливаю» качественные наработки) – естественно я не буду соблюдать какую либо коммерческую тайну – в данном случае это просто не уместно.

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

ВложениеРазмер
Иконка пакета Set_Zend+Gdata.zip18.25 КБ
Иконка пакета TELEGRAF_ModPack.zip12.11 КБ

Комментарии

Аватар пользователя korol korol 31 января 2008 в 22:18

)
видел эту статью сегодня утром на друпал бай
Автор хоть один и тот же человек или разные?
Обратных ссылок так и не увидел

Аватар пользователя job job 1 февраля 2008 в 21:23

Эта статья практически во всем, что касается сервисов Google, перекликается с моим новым проектом: я создаю два сообщества в своих доменах (job.org.ua и law.org.ua). Черновой Вариант Статьи на эту тему здесь, а мой Google Mail здесь. Буду рад любому совету по этой теме, а также сотрудничеству в рамках проекта сообществ.

Аватар пользователя DSolutions DSolutions 3 февраля 2008 в 17:24

в этом модуле реализован выбор между доменами (telegraf.by, me.by, biz.by) - при логине в листе появляется список доменов, при регистрации также появляется список доменов. После регистрации пользователю дается имя "имя@домен" поэтому имена не будут пересекаться. Также проводиться проверка того является ли имя "имя@домен" уже зарегистрированным или нет.

Аватар пользователя shtrlz shtrlz 1 февраля 2008 в 23:59

простите, а как быть с русскими никами? можно ли будет как-то вместо русского имени ставить типа транслита или еще чего... Sad или просто на выбор поле пустое давать юзеру.

Аватар пользователя job job 2 февраля 2008 в 2:48

1. Это Google уговаривает Вас воспользоваться лучшим почтовым механизмом в мире. ГЛОБАЛИЗАЦИЯ.

2. Вопрос с никами Вы должны решить самостоятельно.

Аватар пользователя DSolutions DSolutions 5 февраля 2008 в 12:20

До Гугга ничего не дойдет. Когда пользователь введет ранее зарегистрированное имя, то Друпал проверит его в своей базе и выдаст предупреждение если такое имя уже зарегистрировано. Фактически имена в базе Друпала пересекаются с именами в базе Гугла. Если же Друпал по каким либо причинам согласится регистрировать, а Гугл не захочет, то выдается корректное предупреждение "Ошибка сервиса" (такое может быть тогда когда вы уже имеете пользователей в Гугле, но не имеете их в Друпале).

Аватар пользователя yanr yanr 14 марта 2008 в 0:57

Это Ян Розум, имя которого решил беслатно использовать мой горе-подрядчик.
Как всякий плохой поэт, который пытается зачитывать свои стихи всем подряд, автор этой статьи, видимо, из чувства мести, решил обклеить сайты, посвященные друпалу, своей бородатой рифмой.
Написал бы он без моей фамилии мне было бы все равно - а так - приходится писать ответ и закрашивать незаслуженно исписанный забор.

Чтобы не повторятся, скопирую свой ответ Drupal.by ....

Далее копирую свой пост:
""
Только вкратце изложу суть событий (сори в спор вступать не буду)

Пришел парень, по имени Максим(фамилию сейчас не помню, или не хочу вспоминать) сказал что он просто офигенный эксперт по Друпалу, пишет книгу и т.д. Я его знания проверять не стал(какая ошибка!), просто дал задания на оговоренных условиях. Работать этот парень должен был дома, т.е. чистый фриланс. На мои таски по гуглу парень сказал уйдет максимум 2-3 недели.

Ну и начал человек делать. Проходит неделя - ничего. Проходит 2, 3 - приносит мне на дисках скрипты (имейл у него не работал). Недели 2 делали регистрацию юзера по имэйл, + добавляли 2 дополнительных поля.

16 часов (по его отчету) делали перевод модуля capcha!!

А когда о модуле CCK заговорили так парень сказал что тут надо дoooолго разбираться....он с этим еще не работал.

По поводу аутентификации на Гугл вообще история страшная - убито столько времени, а прошу показать результат - а результата нет. Максимум что я видел - это готовые сэмплы с сайта Zend

Короче говоря, не вдаваясь в подробности - стало у меня к нему недоверие проявляться и решил я его попросить написать отчет. Стал человек сопротивляться. Отчет я с него выжал. Плохой отчет, честно скажу. Даже собедование со мной включил (2 часа). Было меньше, честно, минут 15, видно дорогу тоже включил. Потом взял я этот отчет вместе с его кодом и отдал другому пхп программеру, моему товарищу и для того, чтобы он ему уделил ему время, дал ему слегка денег. Что я услышал о моем разработчике... мама дорогая! Мягко говоря - ну очень мало сделано, а то что сделано, сделано плохо или это делать вообще было не нужно. Короче жестко он оценил работу коллеги.

Пока мой товарищ все это проверял, мой горе-программер начал чтото чувствовать, звонит мне и просит дать ему срочно денег на учебу.

Ребята, я не злодей. Я получил отчет и просто говорю ему - то что ты сделал -можно было закончить как минимум за месяц ( а рельно гораздо меньше). Я ему делаю предложение - раз тебе срочно нужны деньги - я тебе дам, но дам половину - т.е. 250 баксов (и даже это не мало за то что он сделал). Ты говоришь что чтобы доделать нужно пару дней и все готово? Ок - доделываешь я тебе отдаю еще 250.

Короче, благодарил он меня долго и искренне. Со всем согласен был. Пришел за деньгами, а потом пропал. Доделывать там надо было сами понимаете не 2 дня...

Я реально в минусе на 250 у.е. Мне их немного жалко,я их выкинул впустую, честно. Из того, что он сделал, мне, увы, ничего не пригодилось.

КОНЕЦ ЦИТАТЫ

Короче говоря, уяснил я себе только одно - на разовые проекты я больше никого не буду нанимать с оплатой по времени.
+ я постараюсь никому больше не давать предоплаты, потому что попадаются такие "начинающие офигенно-профессиональные ничего неумеющие" парни, отдашь им денег, а они потом еще с умным видом будут писать всякую ерунду.
+ я решил по мере возможности перед каждым новым проектом, связанным с незнакомой мне областью знаний - обязательно прочитать книгу либо статью по этой теме, чтобы у тех, кто будет пытаться меня обмануть было гораздо меньше шансов это сделать.
( с друпалом сейчас идет гораздо легче после книги Pro Drupal Development издательства apress. Попробовал бы этот юноша сейчас мне втереть...

Если кто-то хороший пхп/перл программист - стучитесь в асю 114024777. У меня почти всегда есть проекты и я всегда плачу за выполненную работу. Иногда, действительно, я неплачу за невыполненную работу, хотя уже несколько раз мне приходилось изменять второму принципу Smile