Плагін WordPress, який переносить події сайту в Telegram і дозволяє користувачам входити з тим самим обліковим записом. Спочатку його було написано для цього сайту, потім узагальнено, і він опублікований як програмне забезпечення з відкритим кодом під ліцензією GPL‑3.0.
Джерело, проблеми та релізи: github.com/kostyasorokin/wp-telegram-integration
Вхід
Вхід у Telegram реалізовано як потік кодів авторизації OpenID Connect з PKCE, а не як віджет копіювання та вставки, який постачається з більшістю плагінів. Токен ідентифікації перевіряється криптографічно перед початком сеансу WordPress.
Потік запам'ятовує, який браузер його запустив. Посилання зворотного виклику, скопійоване з адресного рядка іншого користувача, не може бути відтворене для передачі облікового запису користувача — файл cookie стану є індивідуальним для кожного потоку, і невідповідний файл завершує спробу, а не призводить до входу в систему.
Telegram не повертає жодної електронної адреси та жодного надійного аватара. Обидві прогалини заповнені навмисно: у нового облікового запису запитується електронна адреса один раз, а фотографія профілю отримується лише через HTTPS з власних хостів Telegram.
Сповіщення
Контент, коментарі, користувачі, медіа, безпека, оновлення та стан сайту мають свій власний перемикач, а WooCommerce додає події замовлень, наявності та кошика. Кожне повідомлення збирається із заголовка, який налаштовує власник, а не з фіксованого шаблону.
Інтеграції третіх сторін не є жорстко закодованим списком. Плагін сканує власний каталог інтеграцій, перевіряє знайдене та кешує результат, тому додавання підтримки для іншого плагіна відбувається через файл, а не через редагування в шести місцях.
Кажу тобі, коли це зламається
Сповіщення, яке не надійшло, залишає причину невдачі — власні слова Telegram, чат, для якого воно було надіслане, та розмір повідомлення. Тіло сповіщення ніколи не зберігається, оскільки воно може містити надсилання форми.
Стан доставки повідомляється через WordPress Site Health, тому “сповіщення перестали надходити” – це те, що власник бачить, а не те, що він помічає зрештою. Відновлення після помилки реєструється негайно, а не чекається на досягнення успіху.
Контактна форма 7 проходить окрему перевірку. Безперервний цикл відхилених як спам листів розглядається як доказ роботи спам-фільтра, а не відправників — справжній спам надходить паровими потоками, на відміну від шлюзу, який все відхиляє.
Побудовано для будівництва
Інші плагіни та теми отримують невеликий документований API: надсилання повідомлення, безпосереднє звернення до Bot API або реєстрація команди webhook. Допоміжний елемент кнопки входу повертає порожній рядок, коли плагін не завантажився, коли вхід вимкнено та коли відвідувач вже увійшов у систему, тому шаблон може відобразити його без захисту навколо нього.
Кожен вихідний виклик, який може здійснити плагін, розкривається в його readme-файлі, а два небезпечні налаштування навмисно позначені простими словами та вимкнені.
Ролі
Розробник
Konstantin Sorokin
Виконано
- Архітектура плагінів та розробка на PHP
- Вхід у Telegram через OpenID Зв'язок з PKCE
- Шар сповіщень для подій WordPress та WooCommerce
- Інтеграції з Contact Form 7, Mailchimp та WooCommerce
- Клієнт API бота та кінцева точка REST webhook
- Налаштування адміністратора, перевірки стану сайту та журнал доставки
- Переклади російською та українською
- Документація та реліз з відкритим вихідним кодом