Browse Source

全局参数正则判断

master
巴林闲侠 2 years ago
parent
commit
80be9e9e0a
  1. 12
      web/client/src/components/Upload/index.js
  2. 2
      web/client/src/layout/containers/layout/index.js
  3. 1
      web/client/src/sections/auth/containers/login.js
  4. 16
      web/config.js
  5. 12
      web/routes/attachment/index.js

12
web/client/src/components/Upload/index.js

@ -9,7 +9,7 @@ import { PlusOutlined, UploadOutlined, CloseOutlined } from '@ant-design/icons';
class Uploads extends Component { class Uploads extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.ApiRoot = API_ROOT this.ApiRoot = FS_API_ROOT
this.state = { this.state = {
fileUploading: false, fileUploading: false,
fileList: [], fileList: [],
@ -109,10 +109,10 @@ class Uploads extends Component {
video: ['mp4'] video: ['mp4']
}; };
/** /**
* uploadType string 主要区别文件上传路径 以及类型 web/routes/attachment/index.js UploadPath key 值为准默认 project * uploadType string 主要区别文件上传路径 以及类型 web/routes/attachment/index.js UploadPath key 值为准;默认 project;
* disabled boolean 上传是否可用 * disabled boolean 上传是否可用
* maxFilesNum number 最大上传数量 * maxFilesNum number 最大上传数量
* fileTypes array[string] 可允许上传的文件类型 * fileTypes array[string] 可允许上传的文件类型;
* maxFileSize number 单个文件最大大小 M * maxFileSize number 单个文件最大大小 M
* listType antd upload 组件的属性 * listType antd upload 组件的属性
* onChange function 文件数量变化时候回调 返回文件 * onChange function 文件数量变化时候回调 返回文件
@ -149,13 +149,13 @@ class Uploads extends Component {
return false; return false;
} }
if (file.name.length > 60) { if (file.name.length > 60) {
message.warning(`文件名过长(大于60字符)请修改后上传`); message.warning(`文件名过长(大于60字符),请修改后上传`);
return false; return false;
} }
const extNames = file.name.split('.'); const extNames = file.name.split('.');
var reg = /^[\.\s\u4e00-\u9fa5a-zA-Z0-9_-]{0,}$/; var reg = /^[\.\s\u4e00-\u9fa5a-zA-Z0-9_-]{0,}$/;
if (!reg.exec(file.name)) { if (!reg.exec(file.name)) {
message.warning(`文件名包含除字母、汉字、数字、中划线、下划线之外的字符请修改后上传`); message.warning(`文件名包含除字母、汉字、数字、中划线、下划线之外的字符,请修改后上传`);
return false; return false;
} }
let isDAE = false; let isDAE = false;
@ -210,7 +210,7 @@ class Uploads extends Component {
that.setState({ that.setState({
fileUploading: false fileUploading: false
}); });
message.error(`${info.file.name} 上传失败请重试`); message.error(`${info.file.name} 上传失败,请重试`);
if (onStateChange) { if (onStateChange) {
onStateChange({ uploading: false }); onStateChange({ uploading: false });
} }

2
web/client/src/layout/containers/layout/index.js

@ -66,7 +66,7 @@ const LayoutContainer = props => {
dom.scrollTop = 0; dom.scrollTop = 0;
} }
}) })
console.log(API_ROOT); console.log(FS_API_ROOT);
return ( return (
<Layout id="layout"> <Layout id="layout">
<Layout.Header style={{ padding: 0 }}> <Layout.Header style={{ padding: 0 }}>

1
web/client/src/sections/auth/containers/login.js

@ -250,7 +250,6 @@ const Login = props => {
function mapStateToProps(state) { function mapStateToProps(state) {
const { auth } = state; const { auth } = state;
console.log(auth.error);
return { return {
user: auth.user, user: auth.user,
error: auth.error, error: auth.error,

16
web/config.js

@ -10,8 +10,7 @@ const os = require('os');
const moment = require('moment'); const moment = require('moment');
const args = require('args'); const args = require('args');
const dev = process.env.NODE_ENV == 'development'; const dev = process.env.NODE_ENV == 'development';
dev && console.log('\x1B[33m%s\x1b[0m', '请遵循并及时更新 readme.md,维护良好的开发环境,媛猿有责');
dev && console.log('\x1B[33m%s\x1b[0m', '请遵循并及时更新 readme.md,维护良好的开发环境,媛猿有责');
// // 启动参数 // // 启动参数
args.option(['p', 'port'], '启动端口'); args.option(['p', 'port'], '启动端口');
args.option(['u', 'api-url'], 'webapi的URL'); args.option(['u', 'api-url'], 'webapi的URL');
@ -41,7 +40,7 @@ if (
// || !ANXINCLOUD_QINIU_BUCKET_RESOURCE // || !ANXINCLOUD_QINIU_BUCKET_RESOURCE
// || !ANXINCLOUD_QINIU_DOMAIN_QNDMN_RESOURCE // || !ANXINCLOUD_QINIU_DOMAIN_QNDMN_RESOURCE
) { ) {
console.log('缺少启动参数异常退出'); console.log('缺少启动参数,异常退出');
args.showHelp(); args.showHelp();
process.exit(-1); process.exit(-1);
} }
@ -51,7 +50,7 @@ const product = {
staticDirs: [path.join(__dirname, './client')], staticDirs: [path.join(__dirname, './client')],
frontParams: { frontParams: {
// 以大写字母命名 // 以大写字母命名
API_ROOT: FS_UNIAPP_API FS_API_ROOT: FS_UNIAPP_API
}, },
mws: [ mws: [
{ {
@ -116,6 +115,15 @@ const product = {
maxRetries: 1 maxRetries: 1
} }
}; };
if (product.frontParams) {
const patt = /[^A-Z|_]+/
for (let k in product.frontParams) {
if (!k.startsWith('FS_') || patt.test(k)) {
console.warn(`参数 ${k} 当以大写字母和下划线组成 且以 FS_ 开头`);
process.exit(-1);
}
}
}
let config; let config;
if (dev) { if (dev) {

12
web/routes/attachment/index.js

@ -172,12 +172,12 @@ module.exports = {
const filename = file.filename || path.basename(file); const filename = file.filename || path.basename(file);
const client = new OSS({ const client = new OSS({
// yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。 // yourRegion填写Bucket所在地域.以华东1(杭州)为例,Region填写为oss-cn-hangzhou.
region: aliOss.region, region: aliOss.region,
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 // 阿里云账号AccessKey拥有所有API的访问权限,风险很高.强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户.
accessKeyId: aliOss.accessKey, accessKeyId: aliOss.accessKey,
accessKeySecret: aliOss.secretKey, accessKeySecret: aliOss.secretKey,
// 填写Bucket名称,例如examplebucket。 // 填写Bucket名称,例如examplebucket.
bucket: aliOss.bucket, bucket: aliOss.bucket,
}); });
@ -206,12 +206,12 @@ module.exports = {
const { aliOss } = opts const { aliOss } = opts
const { path, filename } = ctx.query const { path, filename } = ctx.query
const client = new OSS({ const client = new OSS({
// yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。 // yourRegion填写Bucket所在地域.以华东1(杭州)为例,Region填写为oss-cn-hangzhou.
region: aliOss.region, region: aliOss.region,
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 // 阿里云账号AccessKey拥有所有API的访问权限,风险很高.强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户.
accessKeyId: aliOss.accessKey, accessKeyId: aliOss.accessKey,
accessKeySecret: aliOss.secretKey, accessKeySecret: aliOss.secretKey,
// 填写Bucket名称,例如examplebucket。 // 填写Bucket名称,例如examplebucket.
bucket: aliOss.bucket, bucket: aliOss.bucket,
}); });

Loading…
Cancel
Save