Skip to content

Commit

Permalink
Update README.md (#9)
Browse files Browse the repository at this point in the history
  • Loading branch information
CrazyTapok-bit committed Mar 18, 2023
1 parent 120f958 commit 7288698
Showing 1 changed file with 28 additions and 12 deletions.
40 changes: 28 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

Перевірка даних відбувається шляхом шифрування отриманих, необроблених, даних користувача та звірка з хешем який нам надає телеграм. Провалену перевірку можна прирівняти з можливою спробою обходу або злому системи.

Необроблені дані знаходяться в полі `window.Telegram.WebApp.initData` - це поле доступне на фронтенді, після виконання дій описаних [тут](https://core.telegram.org/bots/webapps#initializing-web-apps). Саме дані з цього поля треба передати на бекенд для перевірки.
Пакет дозволяє здійснити перевірту деяких типів користувачів. А саме, перевірка даних з поля `window.Telegram.WebApp.initData` котра стає доступне на фронтенді, після виконання дій описаних [тут](https://core.telegram.org/bots/webapps#initializing-web-apps). А також перевірки користувача який здійснює логін за допомогою [Telegram Login Widget](https://core.telegram.org/widgets/login)

`ПОПЕРЕДЖЕННЯ`: Даним із цього поля не можна довіряти. Ви повинні використовувати лише дані з initData на сервері бота і лише після їх перевірки.
`ПОПЕРЕДЖЕННЯ`: Даним із цих полів не можна довіряти. Ви повинні використовувати їх лише на сервері бота і лише після їх перевірки.

Щоб отримати змогу швидко та безпечно перевірити дані. Треба виконати наступні дії
Щоб отримати змогу швидко та безпечно перевірити дані, рекомендуємо виконати наступні дії

## Встановлення TgWebValid
Встановити пакет TgWebValid можна через пакетний менеджер [composer](https://getcomposer.org/) виконавши команду
Expand All @@ -18,7 +18,7 @@ composer require tg/tgwebvalid
Ми йдемо слідом за технологіями, тому пакет починає працювати з версії `PHP >= 8.0.2`.

## Як користуватись
Для початку використання достатньо передати рядок з необробленими даними в конструктор класу TgWebValid.
Перед початком використання достатньо в конструктор класу TgWebValid передати токен від бота, від імені якого здійснюється перевірка.

```php
<?php
Expand All @@ -27,25 +27,38 @@ use TgWebValid\TgWebValid;

include './vendor/autoload.php';

const INIT_DATA = 'query_id=...';

$tgWebValid = new TgWebValid(INIT_DATA);
const TG_BOT_TOKEN = 'XXX-XXX-XXX';

$tgWebValid = new TgWebValid(TG_BOT_TOKEN);
```
Ми не зберігаємо та не передаємо ваш токен на стороні джерела. Вся робота автономна та не виходить за межі файлів.

Після цього викликавши метод isValid виконати перевірку даних. Перевірка даних відбувається безпечним шляхом з використанням токену від Telegram боту. Ми не зберігаємо та не передаємо ваш токен на стороні джерела. Вся робота автономна та не виходить за межі файлів.

Тепер, якщо ви хочете виконати перевірку користувача який відкриває веб-додаток, вам слід скористатись методом `isValid`. Який аргументом приймає дані для обробки
```php
const TG_BOT_TOKEN = 'XXX-XXX-XXX';
const INIT_DATA = 'query_id=...';

if($tgWebValid->isValid(TG_BOT_TOKEN)) {
if($tgWebValid->isValid(INIT_DATA)) {
// перевірка успішно пройдена
} else {
// провалена перевірка
}
```

Результатом перевірки буде повернуто тип Boolean зі значенням true/false.
Якщо ж у вас є потреба перевірити користувача який здійснює вхід в систему за допомогою [Telegram Login Widget](https://core.telegram.org/widgets/login), вам слід скористатись методом `isLoginValid` який також аргументом приймає необроблені дані користувача для перевірки
```php
const LOGIN_USER_DATA = [
'auth_date' => 1679130118,
'first_name' => 'Сергій',
// ... та решта полів
];

if($tgWebValid->isLoginValid(LOGIN_USER_DATA)) {
// перевірка успішно пройдена
} else {
// провалена перевірка
}
```
У всіх випадках, результатом перевірки буде повернуто тип Boolean зі значенням true/false.

У разі успішного проходження перевірки користувач вважається верифікованим та вірним. Тому можемо спокійно користуватись його даними.

Expand All @@ -60,6 +73,9 @@ $receiver = $tgWebValid->initData->receiver;
// Об’єкт, що містить дані про чат
$chat = $tgWebValid->initData->chat;

// Об’єкт, що містить дані користувача, перевіреного методом isLoginValid
$chat = $tgWebValid->user;

// та багато іншого
```
Зверніть увагу що певні дані присутні в залежності від ситуації, тому інколи можуть мати значення null замість об'єкта даних. Більш детальніше можна ознайомитись в [офіційній документації Telegram](https://core.telegram.org/bots/webapps#webappinitdata)
Expand Down

0 comments on commit 7288698

Please sign in to comment.