Зміни в документі Версія 6: Налаштування

Остання зміна 2024/07/11 10:07 автором Ashterix

Від версії 12.2
редаговано Ashterix
дата 2024/05/09 01:24
Змінити коментар: Немає коментарів для цієї версії
До версії 13.1
редаговано Ashterix
дата 2024/05/09 01:32
Змінити коментар: Немає коментарів для цієї версії

Підсумок

Подробиці

Властивості сторінки
Вміст
... ... @@ -22,8 +22,7 @@
22 22  
23 23  * вказати пустий масив {{code language="none"}}[]{{/code}} щоб зробити API повністю відкритим
24 24  
25 -{{code language="yaml"}}
26 -# config/packages/ufo_json_rpc.yaml
25 +{{code language="yaml" layout="LINENUMBERS" width="500px" title="config/packages/ufo_json_rpc.yaml"}}
27 27  ufo_json_rpc:
28 28   security:
29 29   protected_methods: []
... ... @@ -63,6 +63,12 @@
63 63  
64 64  
65 65  
65 +
66 +
67 +
68 +
69 +
70 +
66 66  == {{code language="none"}}clients_tokens{{/code}} ==
67 67  
68 68  Тепер слід вказати масив клієнтськіх токенів, які будуть мати доступ до API.
... ... @@ -119,4 +119,32 @@
119 119  
120 120  === Токени для користувача ===
121 121  
122 -Вам може стати
127 +Припускаю, що у вас може виникнути потреба зробити персональні ключі для користувачів вашого додатку, можливо ви захочете впровадити ліміти або інші обмеження
128 +В такому випадку
129 +
130 +{{code language="php" layout="LINENUMBERS" title="new class"}}
131 +<?php
132 +
133 +namespace App\Services\RpcSecurity;
134 +
135 +use App\Services\UserService;
136 +use Symfony\Component\Security\Core\Exception\UserNotFoundException;
137 +use Ufo\JsonRpcBundle\Security\Interfaces\ITokenValidator;
138 +use Ufo\RpcError\RpcInvalidTokenException;
139 +
140 +class UserTokenValidator implements ITokenValidator
141 +{
142 +
143 + public function __construct(protected UserService $userService) {}
144 +
145 + public function isValid(string $token): bool
146 + {
147 + try {
148 + $this->userService->getUserByToken($token);
149 + return true;
150 + } catch (UserNotFoundException $e) {
151 + throw new RpcInvalidTokenException(previous: $e);
152 + }
153 + }
154 +}
155 +{{/code}}