Skip to content

Commit d72fe93

Browse files
author
Pavel
committed
master: Новая версия JsonRpc
1 parent 9223220 commit d72fe93

File tree

3 files changed

+51
-47
lines changed

3 files changed

+51
-47
lines changed

config/jsonrpc.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@
112112
* Параметры, которые необходимо скрыть из логов
113113
*/
114114
//'hideParams' => [
115-
// 'App\\Http\\TestController1@method' => ['password', 'data.phone_number']
115+
// 'App\\Http\\TestController1@method' => ['password', 'data.phone_number'],
116116
// 'App\\Http\\TestController2' => ['password', 'data.phone_number']
117117
//]
118118
]

readme.md

Lines changed: 49 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ return $server->handle($request, $options);
181181
//'App\\Http\\TestController2' => '*',
182182
],
183183
```
184-
В указанном примере в методу `method` контроллера `App\Http\TestController1` будут иметь доступ только клиенты
184+
В указанном примере к методу `method` контроллера `App\Http\TestController1` будут иметь доступ только клиенты
185185
`systemName1` и `systemName2`, и ко всем методам контроллера `App\Http\TestController2` - все клиенты.
186186

187187
## Валидация параметров
@@ -198,58 +198,61 @@ public function store($title, $body)
198198
// The blog post is valid...
199199
}
200200
```
201-
202-
## Скрытие конфиденциальной информации в логах системы
203-
Для того, чтобы убрать конфиденциальную информацию (логины, пароли, токены и пр.) из логов системы нужно в контроллере перепределить массив $hideDataLog.
201+
Кроме того, в указанном trait доступны следующие методы:
204202
```php
205-
public $hideDataLog = [
206-
type => [
207-
'method' => [key|bindName]
208-
],
209-
type => [
210-
'method' => [key|bindName]
211-
],
212-
];
213-
```
214-
*type* - определяет где скрываем данные. Имеет 4 значения:
215-
LogHelper::TYPE_REQUEST - убрать данные из HTTP запроса
216-
LogHelper::TYPE_SQL - убрать данные из SQL запроса
217-
LogHelper::TYPE_EXCEPTION - убрать данные при вызове ошибки
218-
LogHelper::TYPE_RESPONSE - убрать данные из HTTP ответа
203+
/**
204+
* Возвращает массив с переданными в запросе параметрами
205+
*/
206+
protected function getArrayRequest(): array;
219207

220-
*method* - метод контроллера
208+
/**
209+
* Возвращает экземпляр класса с текущим запросом
210+
*/
211+
protected function getRequest(): JsonRpcRequest;
221212

222-
*[key|bindName]* - определяет, что именно нужно скрыть при вызове вышеуказанного метода.
223-
Для LogHelper::TYPE_SQL нужно перечислить названия меток в sql запросе.
224-
Для остальных номера входных переменных (начиная в нуля)
213+
/**
214+
* Валидация переданных в контроллер параметров
215+
*
216+
* @param array $rules Правила валидации
217+
* @param array $messages Сообщения об ошибках
218+
* @param bool $noException Если true - Exception генерироваться не будет
219+
*
220+
* @return bool|MessageBag Прошла валидация или нет
221+
*/
222+
protected function validate($rules, array $messages = [], $noException = false);
225223

224+
/**
225+
* Валидирует и фильтрует переданные в контроллер параметры. Возвращает отфильтрованный массив с параметрами
226+
*
227+
* @param array $rules Правила валидации
228+
* @param array $messages Сообщения об ошибках
229+
* @param bool $noException Если true - Exception генерироваться не будет
230+
*/
231+
protected function validateAndFilter($rules, array $messages = [], $noException = false): array;
232+
```
233+
234+
## Логирование
235+
Вы можете указать любой канал логов, который зарегистрирован у вас в системе (либо предварительно создать его)
236+
с помощью параметра `jsonrpc.log.channel`:
226237
```php
227-
class TestController extends ApiController
228-
{
238+
/**
239+
* Канал лога, в который будут записываться все логи
240+
*/
241+
'channel' => 'default',
242+
```
229243

230-
public $hideDataLog = [
231-
LogHelper::TYPE_REQUEST => [
232-
'm1' => [0, 2],
233-
'm2' => [0]
234-
],
235-
LogHelper::TYPE_SQL => [
236-
'm2' => ['bindName1', 'bindName2']
237-
],
238-
LogHelper::TYPE_EXCEPTION => [
239-
'm1' => [0, 1],
240-
'm2' => [0]
241-
],
242-
LogHelper::TYPE_RESPONSE => [
243-
'm1' => [4],
244-
'm2' => [0]
245-
]
246-
];
247-
248-
public function m1($p0, $p1, $p2, $p3, $p4){}
249-
250-
public function m2($p0){}
251-
}
244+
## Скрытие конфиденциальной информации в логах системы
245+
Для того, чтобы убрать конфиденциальную информацию (логины, пароли, токены и пр.) из логов системы нужно в
246+
указать,что именно скрывать, в конфигурации `jsonrpc.log.hideParams`:
247+
```php
248+
[
249+
'App\\Http\\TestController1@method' => ['password', 'data.phone_number'],
250+
'App\\Http\\TestController2' => '*',
251+
]
252252
```
253+
В указанном примере из логов метода `method` контроллера `App\Http\TestController1` будут скрываться занчения параметров
254+
`password` и `data.phone_number` (поддерживается вложенность параметров в запросе при помощи разделителя `.`).
255+
В контроллере `App\Http\TestController2` во всех методах будут скрываться значения абсолютно всех параметров.
253256

254257
## Как это работает
255258
Клиент послает валидный JsonRpc2.0-запрос:

src/Traits/JsonRpcController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ protected function getArrayRequest(): array
2828
}
2929

3030
/**
31+
* Возвращает экземпляр класса с текущим запросом
3132
* @return JsonRpcRequest
3233
*/
3334
protected function getRequest(): JsonRpcRequest

0 commit comments

Comments
 (0)