From 78ce93dad120f80d8b42eb763d81b04d48d07907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D1=96=D0=B9?= <61122611+CrazyTapok-bit@users.noreply.github.com> Date: Thu, 15 Feb 2024 23:54:00 +0200 Subject: [PATCH 1/3] Updated to new version and improved examples --- src/.vuepress/navbar/en.ts | 6 +- src/.vuepress/navbar/uk.ts | 6 +- src/docs/example/README.md | 9 +++ src/docs/example/login-winget.md | 64 ++++++++++++++++++ src/docs/{example.md => example/web-app.md} | 40 +++++------ src/docs/get-started/multiple.md | 6 +- src/en/docs/example/README.md | 9 +++ src/en/docs/example/login-winget.md | 67 +++++++++++++++++++ .../docs/{example.md => example/web-app.md} | 50 +++++++------- src/en/docs/get-started/multiple.md | 6 +- 10 files changed, 210 insertions(+), 53 deletions(-) create mode 100644 src/docs/example/README.md create mode 100644 src/docs/example/login-winget.md rename src/docs/{example.md => example/web-app.md} (60%) create mode 100644 src/en/docs/example/README.md create mode 100644 src/en/docs/example/login-winget.md rename src/en/docs/{example.md => example/web-app.md} (58%) diff --git a/src/.vuepress/navbar/en.ts b/src/.vuepress/navbar/en.ts index 5866537..b507c5d 100644 --- a/src/.vuepress/navbar/en.ts +++ b/src/.vuepress/navbar/en.ts @@ -8,5 +8,9 @@ export const enNavbar = navbar([ link: "/en/docs/README.md", activeMatch: "^/en/docs/$" }, - "/en/docs/example", + { + text: "Full example", + icon: "bolt", + link: "/en/docs/example/README.md" + } ]); diff --git a/src/.vuepress/navbar/uk.ts b/src/.vuepress/navbar/uk.ts index 37807d2..1483028 100644 --- a/src/.vuepress/navbar/uk.ts +++ b/src/.vuepress/navbar/uk.ts @@ -8,5 +8,9 @@ export const ukNavbar = navbar([ link: "/docs/README.md", activeMatch: "^/docs/$" }, - "/docs/example", + { + text: "Повний приклад", + icon: "bolt", + link: "/docs/example/README.md" + } ]); diff --git a/src/docs/example/README.md b/src/docs/example/README.md new file mode 100644 index 0000000..672efa0 --- /dev/null +++ b/src/docs/example/README.md @@ -0,0 +1,9 @@ +--- +title: Приклад коду +icon: bolt +index: false +dir: + order: 5 +--- + + \ No newline at end of file diff --git a/src/docs/example/login-winget.md b/src/docs/example/login-winget.md new file mode 100644 index 0000000..ba95c1a --- /dev/null +++ b/src/docs/example/login-winget.md @@ -0,0 +1,64 @@ +--- +title: Віджет входу +icon: right-to-bracket +order: 2 +head: + - - meta + - name: description + content: Як перевірити дані користувача, отримані через Telegram Login Widget на PHP +--- + +Ми намагаємось відобразити максимально повний приклад яким ви, скоріш за все, будете користуватись. + +```php +addBot( + name: 'secondary', + token: 'TELEGRAM_BOT_TOKEN_2' + ); + + /** Використаю бот за замовчуванням */ + $bot = $tgWebValid->bot(); + + /** Або, вказую з яким ботом хочу працювати*/ + $bot = $tgWebValid->bot( + name: 'secondary' + ); + + /** + * Викликаю метод validateLoginWidget який перевіре дані + * отримані від Telegram Login Widget + */ + $user = $bot->validateLoginWidget( + user: [/** Дані користувача */] + ); + + /** Якщо перевірка успішна, виведу сутність LoginWidget з усіма даними */ + var_dump($user); + +} catch (ValidationException $e) { + // Отримаю виняток валідації якщо перевірку провалено +} catch (BotException $e) { + // Помилившись з назвою бота буду перехоплювати цей виняток +} catch (Exception $e) { + // Оброблю інші помилки, якщо такі будуть +} +``` \ No newline at end of file diff --git a/src/docs/example.md b/src/docs/example/web-app.md similarity index 60% rename from src/docs/example.md rename to src/docs/example/web-app.md index c1ec4b7..3235657 100644 --- a/src/docs/example.md +++ b/src/docs/example/web-app.md @@ -1,7 +1,11 @@ --- -title: Повний приклад -icon: bolt -order: 5 +title: Міні додаток +icon: tablet-screen-button +order: 1 +head: + - - meta + - name: description + content: Як перевірити дані користувача, отримані через Telegram Mini App на PHP --- Ми намагаємось відобразити максимально повний приклад яким ви, скоріш за все, будете користуватись. @@ -10,7 +14,6 @@ order: 5 addBot(new BotConfig( + $tgWebValid->addBot( name: 'secondary', token: 'TELEGRAM_BOT_TOKEN_2' - )); - - /** - * Використаю бот за замовчуванням, - * та викличу бажаний тип перевірки - */ - $user = $tgWebValid->bot()->validateLoginWidget( - user: [/** Дані користувача */] ); - /** Якщо перевірка успішна, виведу сутність LoginWidget з даними про юзера */ - var_dump($user); + /** Використаю бот за замовчуванням */ + $bot = $tgWebValid->bot(); + /** Або, вказую з яким ботом хочу працювати*/ + $bot = $tgWebValid->bot( + name: 'secondary' + ); + /** - * Або, вказую з яким ботом хочу працювати, - * та викликаю бажаний тип перевірки + * Викликаю метод validateInitData який перевіре дані + * отримані від Telegram Mini App */ - $initData = $tgWebValid->bot(name: 'secondary')->validateInitData( + $initData = $bot->validateInitData( initData: 'query_id=...' ); diff --git a/src/docs/get-started/multiple.md b/src/docs/get-started/multiple.md index c9ffac2..f8a185e 100644 --- a/src/docs/get-started/multiple.md +++ b/src/docs/get-started/multiple.md @@ -11,17 +11,15 @@ order: 3 ```php addBot(new BotConfig( +$tgWebValid->addBot( name: 'secondary', token: 'TELEGRAM_BOT_TOKEN_2' -)); +); ``` ## Параметри {#parameters} diff --git a/src/en/docs/example/README.md b/src/en/docs/example/README.md new file mode 100644 index 0000000..83fde07 --- /dev/null +++ b/src/en/docs/example/README.md @@ -0,0 +1,9 @@ +--- +title: Full example +icon: bolt +index: false +dir: + order: 5 +--- + + \ No newline at end of file diff --git a/src/en/docs/example/login-winget.md b/src/en/docs/example/login-winget.md new file mode 100644 index 0000000..7f4bb68 --- /dev/null +++ b/src/en/docs/example/login-winget.md @@ -0,0 +1,67 @@ +--- +title: Login Widget +icon: right-to-bracket +order: 2 +head: + - - meta + - name: description + content: How to validate data received via the Telegram Login Widget на PHP +--- + +We try to display as complete an example as possible, which you will most likely use. + +```php +addBot( + name: 'secondary', + token: 'TELEGRAM_BOT_TOKEN_2' + ); + + /** I use the default bot */ + $bot = $tgWebValid->bot(); + + /** Or, specify which bot I want to work with */ + $bot = $tgWebValid->bot( + name: 'secondary' + ); + + /** + * Call the validateLoginWidget method, + * which checks the data received from the Telegram Login Widget + */ + $user = $bot->validateLoginWidget( + user: [/** Дані користувача */] + ); + + /** + * If the check is successful, + * I will display the LoginWidget entity with all user data + */ + var_dump($user); + +} catch (ValidationException $e) { + // I will get a validation exception if the check is failed +} catch (BotException $e) { + // Having made a mistake with the name of the bot, I will catch this exception +} catch (Exception $e) { + // I will process other errors if there are any +} +``` \ No newline at end of file diff --git a/src/en/docs/example.md b/src/en/docs/example/web-app.md similarity index 58% rename from src/en/docs/example.md rename to src/en/docs/example/web-app.md index bb24ec3..1da6a6d 100644 --- a/src/en/docs/example.md +++ b/src/en/docs/example/web-app.md @@ -1,7 +1,11 @@ --- -title: Full example -icon: bolt -order: 5 +title: Mini App +icon: tablet-screen-button +order: 1 +head: + - - meta + - name: description + content: How to validate data received via the Telegram Web App на PHP --- We try to display as complete an example as possible, which you will most likely use. @@ -10,7 +14,6 @@ We try to display as complete an example as possible, which you will most likely addBot(new BotConfig( + $tgWebValid->addBot( name: 'secondary', token: 'TELEGRAM_BOT_TOKEN_2' - )); - - /** - * I use the default bot - * and call the desired type of verification - */ - $user = $tgWebValid->bot()->validateLoginWidget( - user: [/** User data */] ); + /** I use the default bot */ + $bot = $tgWebValid->bot(); + + /** Or, specify which bot I want to work with */ + $bot = $tgWebValid->bot( + name: 'secondary' + ); + /** - * If the check is successful, - * I will display the LoginWidget entity with data about the user - */ - var_dump($user); - - /** - * Or, I specify which bot I want to work with - * and call the desired type of verification + * Call the validateInitData method, + * which checks the data received from the Telegram Mini App */ - $initData = $tgWebValid->bot(name: 'secondary')->validateInitData( + $initData = $bot->validateInitData( initData: 'query_id=...' ); - /** If the check is successful, I will output the InitData entity with all the data */ + /** + * If the check is successful, + * I will output the InitData entity with all user data + */ var_dump($initData); } catch (ValidationException $e) { diff --git a/src/en/docs/get-started/multiple.md b/src/en/docs/get-started/multiple.md index f74a930..ba975bc 100644 --- a/src/en/docs/get-started/multiple.md +++ b/src/en/docs/get-started/multiple.md @@ -11,17 +11,15 @@ Setting up multiple bots is very easy. For this, it is enough to call the `addBo ```php addBot(new BotConfig( +$tgWebValid->addBot( name: 'secondary', token: 'TELEGRAM_BOT_TOKEN_2' -)); +); ``` ## Parameters {#parameters} From de966f963b94c8a9c6b95e85eff3550113e99f29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D1=96=D0=B9?= <61122611+CrazyTapok-bit@users.noreply.github.com> Date: Fri, 16 Feb 2024 00:00:20 +0200 Subject: [PATCH 2/3] Updated pages links --- src/docs/entity/init-data/README.md | 2 +- src/docs/example/{web-app.md => mini-app.md} | 0 src/docs/validator/{web-app.md => mini-app.md} | 0 src/en/docs/entity/init-data/README.md | 2 +- src/en/docs/example/{web-app.md => mini-app.md} | 0 src/en/docs/validator/{web-app.md => mini-app.md} | 0 6 files changed, 2 insertions(+), 2 deletions(-) rename src/docs/example/{web-app.md => mini-app.md} (100%) rename src/docs/validator/{web-app.md => mini-app.md} (100%) rename src/en/docs/example/{web-app.md => mini-app.md} (100%) rename src/en/docs/validator/{web-app.md => mini-app.md} (100%) diff --git a/src/docs/entity/init-data/README.md b/src/docs/entity/init-data/README.md index 5eec990..bf7349c 100644 --- a/src/docs/entity/init-data/README.md +++ b/src/docs/entity/init-data/README.md @@ -5,7 +5,7 @@ dir: order: 1 --- -Цей об’єкт містить дані, які передаються в міні-програму під час її відкриття. Отримати доступ до цієї сутності можна виключно після успішної автентифікації користувача за допомогою валідатора [міні додаток](../../validator/web-app.md). +Цей об’єкт містить дані, які передаються в міні-програму під час її відкриття. Отримати доступ до цієї сутності можна виключно після успішної автентифікації користувача за допомогою валідатора [міні додаток](../../validator/mini-app.md). ## Властивості {#properties} diff --git a/src/docs/example/web-app.md b/src/docs/example/mini-app.md similarity index 100% rename from src/docs/example/web-app.md rename to src/docs/example/mini-app.md diff --git a/src/docs/validator/web-app.md b/src/docs/validator/mini-app.md similarity index 100% rename from src/docs/validator/web-app.md rename to src/docs/validator/mini-app.md diff --git a/src/en/docs/entity/init-data/README.md b/src/en/docs/entity/init-data/README.md index 334cbbf..83f5434 100644 --- a/src/en/docs/entity/init-data/README.md +++ b/src/en/docs/entity/init-data/README.md @@ -5,7 +5,7 @@ dir: order: 1 --- -This object contains the data that is passed to the applet when it is opened. This entity can only be accessed after successful user authentication using the validator [mini-app](../../validator/web-app.md). +This object contains the data that is passed to the applet when it is opened. This entity can only be accessed after successful user authentication using the validator [mini-app](../../validator/mini-app.md). ## Properties {#properties} diff --git a/src/en/docs/example/web-app.md b/src/en/docs/example/mini-app.md similarity index 100% rename from src/en/docs/example/web-app.md rename to src/en/docs/example/mini-app.md diff --git a/src/en/docs/validator/web-app.md b/src/en/docs/validator/mini-app.md similarity index 100% rename from src/en/docs/validator/web-app.md rename to src/en/docs/validator/mini-app.md From 1ab9b1716b24b873623deed8ae042a9bb98e8377 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D1=96=D0=B9?= <61122611+CrazyTapok-bit@users.noreply.github.com> Date: Fri, 16 Feb 2024 00:13:59 +0200 Subject: [PATCH 3/3] Improved page navigation --- src/docs/get-started/usage.md | 6 +++++- src/docs/validator/login-widget.md | 2 ++ src/docs/validator/mini-app.md | 2 ++ src/en/docs/get-started/usage.md | 6 +++++- src/en/docs/validator/login-widget.md | 2 ++ src/en/docs/validator/mini-app.md | 2 ++ 6 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/docs/get-started/usage.md b/src/docs/get-started/usage.md index 829a5fd..f8d6afb 100644 --- a/src/docs/get-started/usage.md +++ b/src/docs/get-started/usage.md @@ -16,8 +16,12 @@ order: 4 * За потреба додайте інших ботів */ +/** Використайте бот за замовчуванням */ +$bot = $tgWebValid->bot(); + +/** Або, вкажіть з яким ботом хочете працювати */ $bot = $tgWebValid->bot( - name: 'secondary' + name: 'secondary' ); ``` diff --git a/src/docs/validator/login-widget.md b/src/docs/validator/login-widget.md index 2cff0c8..3b8fbaa 100644 --- a/src/docs/validator/login-widget.md +++ b/src/docs/validator/login-widget.md @@ -10,6 +10,8 @@ head: Ми перевіряємо автентифікацію та цілісність отриманих даних, порівнявши отриманий хеш-параметр із шістнадцятковим представленням підпису `HMAC-SHA-256` рядка перевірки даних із хешем `SHA256` маркера бота, який використовується як секретний ключ. Деталі [тут](https://core.telegram.org/widgets/login#checking-authorization) +:rocket: Повний приклад коду доступний на [цій сторінці](../example/login-winget.md) + ## Приклад {#example} ```php diff --git a/src/docs/validator/mini-app.md b/src/docs/validator/mini-app.md index 726a556..f609882 100644 --- a/src/docs/validator/mini-app.md +++ b/src/docs/validator/mini-app.md @@ -10,6 +10,8 @@ head: Ми перевіряємо цілісність отриманих даних, порівнявши отриманий хеш-параметр із шістнадцятковим представленням підпису `HMAC-SHA-256` рядка перевірки даних із секретним ключем, який є підписом `HMAC-SHA-256` маркер бота з постійним рядком, `WebAppData` який використовується як ключ. Деталі [тут](https://core.telegram.org/bots/webapps#validating-data-received-via-the-mini-app) +:rocket: Повний приклад коду доступний на [цій сторінці](../example/mini-app.md) + ## Приклад {#example} ```php diff --git a/src/en/docs/get-started/usage.md b/src/en/docs/get-started/usage.md index 3269de2..bce2320 100644 --- a/src/en/docs/get-started/usage.md +++ b/src/en/docs/get-started/usage.md @@ -16,8 +16,12 @@ First of all, specify the name of the bot, the name of which you need to check t * Add other bots if needed */ +/** I use the default bot */ +$bot = $tgWebValid->bot(); + +/** Or, specify which bot I want to work with */ $bot = $tgWebValid->bot( - name: 'secondary' + name: 'secondary' ); ``` diff --git a/src/en/docs/validator/login-widget.md b/src/en/docs/validator/login-widget.md index 56661e2..5a81e2c 100644 --- a/src/en/docs/validator/login-widget.md +++ b/src/en/docs/validator/login-widget.md @@ -10,6 +10,8 @@ head: We verify the authentication and integrity of the received data by comparing the received hash parameter to the hexadecimal representation of the `HMAC-SHA-256` signature of the data validation string with the `SHA256` hash of the bot token used as the secret key. Details [here](https://core.telegram.org/widgets/login#checking-authorization) +:rocket: A complete code example is available at [this page](../example/login-winget.md) + ## Example {#example} ```php diff --git a/src/en/docs/validator/mini-app.md b/src/en/docs/validator/mini-app.md index d6fb0cf..411e709 100644 --- a/src/en/docs/validator/mini-app.md +++ b/src/en/docs/validator/mini-app.md @@ -10,6 +10,8 @@ head: We verify the integrity of the received data by comparing the received hash parameter with the hexadecimal representation of the `HMAC-SHA-256` signature of the data validation string with the secret key that is the `HMAC-SHA-256` signature of the bot token with the constant string `WebAppData` used as a key Details [here](https://core.telegram.org/bots/webapps#validating-data-received-via-the-mini-app) +:rocket: A complete code example is available at [this page](../example/mini-app.md) + ## Example {#example} ```php