114 lines
3.2 KiB
PHP
114 lines
3.2 KiB
PHP
|
<?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;
|
|||
|
}
|
|||
|
|
|||
|
}
|