| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- <?php
- // +----------------------------------------------------------------------
- // | likeadmin快速开发前后端分离管理后台(PHP版)
- // +----------------------------------------------------------------------
- // | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
- // | 开源版本可自由商用,可去除界面版权logo
- // | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
- // | github下载:https://github.com/likeshop-github/likeadmin
- // | 访问官网:https://www.likeadmin.cn
- // | likeadmin团队 版权所有 拥有最终解释权
- // +----------------------------------------------------------------------
- // | author: likeadminTeam
- // +----------------------------------------------------------------------
- declare (strict_types=1);
- namespace app\adminapi\http\middleware;
- /**
- * 演示环境数据加密
- * Class DemoDataMiddleware
- * @package app\adminapi\http\middleware
- */
- class EncryDemoDataMiddleware
- {
- // 需要过滤的接口
- protected $needCheck = [
- // 存储配置
- 'setting.storage/detail',
- // 短信配置
- 'notice.smsConfig/detail',
- // 公众号配置
- 'channel.official_account_setting/getConfig',
- // 小程序配置
- 'channel.mnp_settings/getConfig',
- // 开放平台配置
- 'channel.open_setting/getConfig',
- // 支付配置
- 'setting.pay.pay_config/getConfig',
- ];
- // 可以排除字段
- protected $excludeParams = [
- 'name',
- 'icon',
- 'image',
- 'qr_code',
- 'interface_version',
- 'merchant_type',
- ];
- public function handle($request, \Closure $next)
- {
- $response = $next($request);
- // 非需校验的接口 或者 未开启演示模式
- $accessUri = strtolower($request->controller() . '/' . $request->action());
- if (!in_array($accessUri, lower_uri($this->needCheck)) || !env('project.demo_env')) {
- return $response;
- }
- // 非json数据
- if (!method_exists($response, 'header') || !in_array('application/json; charset=utf-8', $response->getHeader())) {
- return $response;
- }
- $data = $response->getData();
- if (!is_array($data) || empty($data)) {
- return $response;
- }
- foreach ($data['data'] as $key => $item) {
- // 字符串
- if (is_string($item)) {
- $data['data'][$key] = $this->getEncryData($key, $item);
- continue;
- }
- // 数组
- if (is_array($item)) {
- foreach ($item as $itemKey => $itemValue) {
- $data['data'][$key][$itemKey] = $this->getEncryData($itemKey, $itemValue);
- }
- }
- }
- return $response->data($data);
- }
- /**
- * @notes 加密配置
- * @param $key
- * @param $value
- * @return mixed|string
- * @author 段誉
- * @date 2023/3/6 11:49
- */
- protected function getEncryData($key, $value)
- {
- // 非隐藏字段
- if (in_array($key, $this->excludeParams)) {
- return $value;
- }
- // 隐藏字段
- if (is_string($value)) {
- return '******';
- }
- return $value;
- }
- }
|