12 комментариев

В версии фреймворка 1.0.7 (уже доступна для загрузки) изменился инструментарий отправки почты. Теперь в состав ядра фреймворка входит библиотека Swift Mailer, и вся работа с почтой осуществляется на ее основе. В wa-system созданы классы-обертки, унаследованные от Swift. Обновленная статья документации по работе с почтой: http://www.webasyst.com/ru/framework/docs/dev/mail/

Вниманию разработчиков: Старые методы отправки почты более не работают.
Необходимо обновить методы и параметры, которые вы используете для отправки почты в ваших приложениях.

Подробности под катом →

4 комментария

Опубликована документация по интеграции с приложением «Контакты»: http://www.webasyst.com/ru/framework/docs/dev/contacts-app-integration/

Интеграция позволяет любому приложению получить доступ к базе данных контактов и пользователей Вебасиста и, фактически, использовать всю инфраструктуру приложения «Контакты» вместо реализации собственной. Многие будущие приложения (в том числе приложение «Рассылки», которое сейчас находится в разработке, и новый Shop-Script) будут полностью интегрированы с «Контактами» согласно этой документации.

4 комментария

CSRF (англ. Сross Site Request Forgery — «Подделка межсайтовых запросов», также известен как XSRF) — вид атак на посетителей веб-сайтов, суть которого заключается в выполнении действий от имени пользователя без его ведома. Когда пользователья заходит на сайт, созданный злоумышленником, то от его имени на другой сервер тайно отправляется запрос на выполнение некоторого действия (чаще всего это запросы на популярные ресурсы вроде почтовых служб и соцсетей, на которых пользователь с наибольшей вероятностью будет авторизован). Подробнее об CSRF читайте на Википедии.

Основной метод защиты от атак CSRF заключается в следующем:

  1. Все важные действия пользователя (изменение или удаление данных) должны быть реализованы с помощью отправки формы методом POST.
  2. При отправке данных нужно сгенерировать случайную строку (подпись), сохранить ее значение в куках (cookies) и добавлять во все формы с помощью скрытого инпута <input type="hidden" name="_csrf" value="СОХРАНЁННАЯ_СЛУЧАЙНАЯ_СТРОКА">
  3. При получении запросов POST проверять значение из $_COOKIE['_csrf'] и $_POST['_csrf'] и выполнять действие только в том случае, если значения совпадают. Если это не так, то скорее всего форма была отправлена с другого сайта.

Чтобы сделать приложения на основе фреймворка Вебасист более безопасными, мы реализовали защиту от атак CSRF на уровне ядра фреймворка. Применить защиту в вашем приложении следует следующим образом:

  • В конфигурационном файле вашего приложения wa-apps/[APP_ID]/lib/config/app.php необходимо указать 'csrf' => true
  • В шаблонах во все формы с method=POST добавить {$wa->csrf()}
    Эта конструкция автоматически заменится на скрытый input с нужным значением.
  • Дальнейшая проверка будет осуществлена фреймворком автоматически. Если подписи не будут совпадать, то фреймворк вернет ответ с ошибкой 403 Forbidden на этапе инициализации приложения (управление приложению передано не будет).

AJAX: Если вы подключаете в своём приложении скрипт wa-content/js/jquery-wa/wa.core.js, то параметр _csrf также автоматически будет добавляться во все AJAX-запросы, отправляемые методом POST. Если этот скрипт не подключается, то для защиты от CSRF (при включенном 'csrf' => true в конфиге) вам необходимо во все запросы добавлять переменную '_csrf' = get_cookie('_csrf').

Описанный механизм требует от пользователя включенных куки (cookies), и поэтому в данный момент реализован только для бекенда Вебасиста. Реализацию защиты в коде можно посмотреть на примере приложения «Блог».

5 комментариев

Вместе с приложением «Блог» во фреймворке появилась поддержка OAuth-авторизации через внешние сервисы (соцсети). Реализуется этот функционал на системном уровне с помощью адаптеров авторизации. В базовый состав текущей версии фреймворка включены адаптеры для следующих платформ: Фейсбук, Твиттер, Гугл, Вконтакте.

Пример работы OAuth-авторизации вы можете видеть ниже в форме добавления комментария к записи блога. Во фронтендах будущих приложений подобная авторизация пользователей будет поддерживаться по умолчанию (например, в новом Shop-Script для авторизации покупателей при оформлении заказов).

Документация по подключению адаптеров авторизации в вашей установке: http://www.webasyst.com/ru/framework/docs/dev/auth-adapters/

17 комментариев

Приложение «Блог» доступно для установки через Инсталлер!

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

В приложении реализована гибкая плагиновая структура и внедрено много того, что будет использоваться в основе нового Shop-Script. Однако, в данный момент доступ к плагинам еще не открыт. Мы представим несколько интересных плагинов для «Блога» (теги, избранные записи, импорт из ЖЖ, анти-спам Akismet и другие) и документацию для разработчиков в течение ближайшего времени. Плагины можно будет устанавливать через Инсталлер аналогично приложениям.

7 комментариев

В приложении «Сайт» версии 1.1 обновился механизм работы со страницами: функционал страниц вынесен из приложения на системный уровень. В будущем это позволит внедрять функционал страниц в других приложениях без копипаста и написания заново. Первое применение обновленного механизма страниц будет в приложении «Блог»: приложение позволит создавать собственные информационные страницы (например, страницы «О блоге», «Об авторах») аналогично тому, как они создаются в приложении «Сайт». Позже аналогичное применение будет реализовано в «Фото», Shop-Script и других приложениях.

ВАЖНО: Если ваш сайт работает на основе приложения «Сайт», обратите внимание на следующее:

  1. Если у вас только одно поселение приложения «Сайт» на домене (одно правило роутинга для «Сайта»), то ничего делать не надо. Страницы будут продолжать работать, как есть.
  2. Если поселений два или более, то необходимо пересохранить страницы, обновив их адреса (URL). В обновленном приложении «Сайт» страницу нельзя прикрепить к определенному поселению. Теперь страница доступна во всех поселениях приложения за исключением выбранных явно.
  3. Если у вас есть страницы «Сайта», которые прикреплены к поселениям внешних приложений (например, приложений вашей собственной разработки), то после обновления эти страницы перестанут отображаться. Вам необходимо внедрить механизм работы со страницами в ваше приложение (документация для разработчиков в разработке) или добавить адреса выбранных страниц в общий роутинг сайта, «направив» их на приложение «Сайт».

Обновленный механизм страниц облегчает роутинг, быстрее работает и позволит в будущем реализовать возможность переноса приложений и целых сайтов с одного сервера на другой.

1 комментарий

Во фреймворке Вебасист появился новый механизм (обработчик) для выполнения действий по расписанию — cli.php. Приложения могут использовать этот механизм для интеграции с планировщиками задач типа Cron и выполнения задач без участия пользователя. Например, для проверки почты, загрузки новостей с внешних сайтов и пр.

Документация для разработчиков приложений: http://www.webasyst.com/ru/framework/docs/dev/cli/
Пример настройки Cron в cPanel: http://www.webasyst.com/ru/framework/docs/server/cron/

В приложении «Блог», которое будет выпущено в ближайшее время, новый механизм используется для отложенной публикации записей.

24 комментария

Долгожданное приложение «Сайт» доступно для установки через «Инсталлер». Для работы приложения необходимо обновить всю установку Вебасиста, в том числе приложения «Инсталлер» и «Контакты».

«Сайт» предоставляет все необходимые инструменты для создания несложных сайтов, поддерживает многосайтовость, управление маршрутизацией (роутингом), редактор шаблонов дизайна и информационных страниц. Основы создания сайтов с помощью приложения «Сайт» описаны в пошаговом примере создания сайта.

Без использования других приложений «Сайт» позволяет создавать относительно несложные сайты, состоящие только из статических информационных страниц. Вся гибкость и мощь «Сайта» раскроются, когда будут выпущены интегрированные с ним приложения: «Блог», «Фото», «Магазин» и прочие. Тогда на основе «Сайта» можно будет построить действительно многофункциональный сайт. Документация по интеграции своего приложения с «Сайтом» для разработчиков: http://www.webasyst.com/ru/framework/docs/dev/site-app-integration/

Вместе с этим обновлением в «Инсталлере» появилось два новых раздела: «Плагины» и «Темы». В данный момент эти разделы пустые, и мы будем развивать их в ближайших обновлениях.

16 комментариев

Ольга Митрофанова
Интернет-магазин «Мега Подарки»

В августе мы провели рекламную кампанию в купон-сервисе «КупиКупон»: на «КупиКупоне» можно было получить купон, который давал 50%-скидку на любой продукт в нашем интернет-магазине. Вкратце расскажу о результатах акции.

В отличие от стандартных акций, которые предлагают купон-сервисы — покупатель приобретает купон за реальные деньги, и купон дает ему право на скидку (например, покупаешь за 500 рублей купон, и можешь на него поесть на сумму 2000 рублей; другими словами, получаешь 75% скидку), — в нашем случае покупатель получал купон за внутренние бонусы сервиса «КупиКупон». Бонусы накапливаются при участии в других акциях, поэтому получается, что покупатель не платил реальные деньги за наши купоны.

Бонусные акции, в отличие от стандартных, не публикуются на главной странице купон-сервисов, и рассчитаны только на постоянных пользователей купон-сервиса. Интерес «КупиКупона» в бонусных акциях (ведь он за них не получает реальные деньги) — представить разнообразное, качественно отличное от «шиномонтажей» и «салонов красоты» предложение. Мы решили, что для пробы это будет самым подходящим вариантом акции. Плюс, в случае бонусной акции наши затраты были минимальными: мы не платим «КупиКупону» никакой комиссии и просто получаем новых посетителей, которым должны предоставить скидку. Скидка по купонам была установлена в размере 50% — меньшую скидку нельзя поставить по правилам «КупиКупона», а при большей скидке мы бы полностью работали в убыток. Со скидкой в 50% получалось, что в среднем мы продаем продукты по их себестоимости: некоторые продукты выходили «в минус», некоторые — «в плюс».

Итак, мы заключили договор с «КупиКупоном», и на их сайте появилась статья о нашей акции. Статья полностью написана сотрудниками «КупиКупона»: http://www.kupikupon.ru/deal/megapodarki_3872

Реализация на стороне магазина

Наш магазин работает на основе веб-сервиса Shop-Script, и для организации предоставления скидок по акции мы ничего не программировали — просто использовали стандартный механизм купонов на скидку, который предоставляет Shop-Script. «КупиКупон» предоставил нам приобретенные пользователями коды купонов в виде XLS-файла, и купоны из этого файла мы вручную создавали в магазине в режиме администрирования. Было, конечно, не очень удобно вручную добавить полторы тысячи купонов, зато все заказы уже автоматически рассчитывались со скидкой. Впрочем, на добавление купонов ушло всего около часа-полутора (в новой версии Shop-Script будет возможность импорта купонов из файлов — прим. ред.).

Результаты

О результатах акции лучше скажут цифры и графики.

Читать далее →

22 комментария

Работа над приложением «Сайт» близится к завершению.

Несмотря на то, что мы сами уже давно пользуемся этим приложением (например, сайт webasyst.com был открыт на основе «Сайта» еще в июне), для того, чтобы довести приложение до выпуска, потребовалось довольно много времени: было разработано несколько новых системных механизмов во фреймворке, которые будут использоваться другими приложениями для построения сайтов.

Во-первых, это управление роутингом (маршрутизацией) во фронтенде, позволяющее запустить на основе одной установки фреймворка Вебасист сразу несколько сайтов.

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

Например, «Блог» можно поселить по адресу /blog/*, а основной сайт — в корневой директории (/*). Все будущие приложения — Shop-Script, «Фото», «Форум» и прочие — будут легко добавляться в уже работающий сайт. Для этого нужно будет после установки приложения через «Инсталлер» поселить его: указать, по какому адресу оно должно открываться.

Необходимо заметить, что в текущей версии фрейморка механизм роутинга также реализован, однако, настраивается он только вручную в конфигурационных файлах. «Сайт» же позволит управлять роутингом через браузер.

Во-вторых, это единый дизайн-редактор, который позволит через браузер редактировать шаблоны дизайна всех приложений, интегрированных с «Сайтом». Выглядит это примерно так:
Читать далее →