Commit 3edf023a authored by 张伯涛's avatar 张伯涛

对称加密

parent 0b6e38cd
...@@ -63,3 +63,12 @@ export function openapilogDetailApi(id) { ...@@ -63,3 +63,12 @@ export function openapilogDetailApi(id) {
method: 'get' method: 'get'
}) })
} }
/** 组织机构获取secretKey解密*/
export function iaminstitutionDecrypt(params) {
return request({
url: '/iaminstitution/decrypt',
method: 'get',
params: params
})
}
...@@ -83,7 +83,7 @@ ...@@ -83,7 +83,7 @@
</el-table-column> </el-table-column>
<el-table-column label="secretKey" prop="secretKey" :show-overflow-tooltip="true"> <el-table-column label="secretKey" prop="secretKey" :show-overflow-tooltip="true">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.secretKey || '-' }} {{ scope.row.secretKey ? '********' : '-' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="apiPubKey" prop="apiPubKey" :show-overflow-tooltip="true"> <el-table-column label="apiPubKey" prop="apiPubKey" :show-overflow-tooltip="true">
...@@ -157,7 +157,7 @@ ...@@ -157,7 +157,7 @@
</div> </div>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="网关日志" name="second"> <el-tab-pane label="网关日志" name="second">
<gateway-log/> <gateway-log />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<!-- 添加或修改对话框 --> <!-- 添加或修改对话框 -->
...@@ -166,52 +166,61 @@ ...@@ -166,52 +166,61 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="机构名称:" prop="organizationalStructure"> <el-form-item label="机构名称:" prop="organizationalStructure">
<el-input v-model="form.organizationalStructure" :disabled="formDisabled" show-word-limit maxlength="20" placeholder="请输入机构名称" /> <el-input v-if="!formDisabled" v-model="form.organizationalStructure" show-word-limit maxlength="20" placeholder="请输入机构名称" />
<span v-else>{{ form.organizationalStructure || '-' }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="机构编号:" prop="institutionCode"> <el-form-item label="机构编号:" prop="institutionCode">
<el-input v-model="form.institutionCode" :disabled="formDisabled" show-word-limit maxlength="20" placeholder="请输入机构编号" /> <el-input v-if="!formDisabled" v-model="form.institutionCode" show-word-limit maxlength="20" placeholder="请输入机构编号" />
<span v-else>{{ form.institutionCode || '-' }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="ip:" prop="ips"> <el-form-item label="ip:" prop="ips">
<el-input v-model="form.ips" :disabled="formDisabled" show-word-limit placeholder="请输入ip" /> <el-input v-if="!formDisabled" v-model="form.ips" show-word-limit placeholder="请输入ip" />
<span v-else>{{ form.ips || '-' }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="accessKey:" prop="accessKey"> <el-form-item label="accessKey:" prop="accessKey">
<el-input v-model="form.accessKey" :disabled="formDisabled" show-word-limit placeholder="请输入accessKey" /> <el-input v-if="!formDisabled" v-model="form.accessKey" show-word-limit placeholder="请输入accessKey" />
<span v-else>{{ form.accessKey || '-' }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="secretKey:" prop="secretKey" class="secretKeyItem"> <el-form-item label="secretKey:" prop="secretKey" class="secretKeyItem">
<el-input v-model="form.secretKey" :disabled="formDisabled" show-word-limit placeholder="请输入secretKey" /> <el-input v-if="!formDisabled" v-model="form.secretKey" show-word-limit placeholder="请输入secretKey" />
<span v-else style="padding-right: 20px">{{ form.secretKey ? '********' : '-' }}</span>
<el-button v-if="formDisabled === true" class="copy-btn" type="primary" @click="handleCopy">复 制</el-button> <el-button v-if="formDisabled === true" class="copy-btn" type="primary" @click="handleCopy">复 制</el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="apiPubKey:" prop="apiPubKey"> <el-form-item label="是否启用:" prop="flag">
<el-input v-model="form.apiPubKey" :disabled="formDisabled" show-word-limit placeholder="请输入apiPubKey" /> <el-radio-group v-model="form.flag" :disabled="formDisabled">
<el-radio :label="'1'">启用</el-radio>
<el-radio :label="'0'">停用</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="24">
<el-form-item label="apiSecretKey:" prop="apiSecretKey"> <el-form-item label="apiSecretKey:" prop="apiSecretKey">
<el-input v-model="form.apiSecretKey" :disabled="formDisabled" show-word-limit placeholder="请输入apiSecretKey" /> <el-input v-if="!formDisabled" v-model="form.apiSecretKey" show-word-limit placeholder="请输入apiSecretKey" />
<span v-else>{{ form.apiSecretKey || '-' }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> </el-row>
<el-form-item label="是否启用:" prop="flag"> <el-row>
<el-radio-group v-model="form.flag" :disabled="formDisabled"> <el-col :span="24">
<el-radio :label="'1'">启用</el-radio> <el-form-item label="apiPubKey:" prop="apiPubKey">
<el-radio :label="'0'">停用</el-radio> <el-input v-if="!formDisabled" v-model="form.apiPubKey" show-word-limit placeholder="请输入apiPubKey" />
</el-radio-group> <span v-else>{{ form.apiPubKey || '-' }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -234,7 +243,8 @@ ...@@ -234,7 +243,8 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="备注:" prop="remarks"> <el-form-item label="备注:" prop="remarks">
<el-input v-model="form.remarks" :disabled="formDisabled" type="textarea" show-word-limit maxlength="100" placeholder="请输入备注" /> <el-input v-if="!formDisabled" v-model="form.remarks" type="textarea" show-word-limit maxlength="100" placeholder="请输入备注" />
<span v-else>{{ form.remarks || '-' }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -248,6 +258,7 @@ ...@@ -248,6 +258,7 @@
</template> </template>
<script> <script>
import CryptoJS from 'crypto-js'
import ClipboardJS from 'clipboard' import ClipboardJS from 'clipboard'
import commonField from '@/utils/commonField' import commonField from '@/utils/commonField'
import gatewayLog from '@/views/OpenApi/gatewayLog.vue' import gatewayLog from '@/views/OpenApi/gatewayLog.vue'
...@@ -255,7 +266,8 @@ import { ...@@ -255,7 +266,8 @@ import {
organizationAddApi, organizationDelApi, organizationAddApi, organizationDelApi,
organizationGetDataListApi, organizationGetDataListApi,
organizationGetDetailApi, organizationGetDetailApi,
organizationUpdataApi organizationUpdataApi,
iaminstitutionDecrypt
} from '@/api/openApi' } from '@/api/openApi'
export default { export default {
...@@ -289,7 +301,8 @@ export default { ...@@ -289,7 +301,8 @@ export default {
institutionCode: '', institutionCode: '',
organizationalStructure: '', organizationalStructure: '',
startTime: '', startTime: '',
endTime: '' endTime: '',
remarks: ''
}, },
open: false, open: false,
title: '', title: '',
...@@ -422,12 +435,48 @@ export default { ...@@ -422,12 +435,48 @@ export default {
// 手动触发复制动作 // 手动触发复制动作
clipboard.onClick({ currentTarget: document.querySelector('.copy-btn') }) clipboard.onClick({ currentTarget: document.querySelector('.copy-btn') })
}, },
/** 加密*/
encrypt(value) {
// 使用 AES 加密
const key = CryptoJS.enc.Utf8.parse('HPJoVqnZaUEIO1qx') // 16 bytes key for AES-128
const iv = CryptoJS.enc.Utf8.parse('2268842237427511') // 16 bytes IV
const encrypted = CryptoJS.AES.encrypt(value, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
return encrypted.toString()
},
/** 解密*/
decrypt(value) {
const key = CryptoJS.enc.Utf8.parse('HPJoVqnZaUEIO1qx') // 16 bytes key for AES-128
const iv = CryptoJS.enc.Utf8.parse('2268842237427511') // 16 bytes IV
const decrypted = CryptoJS.AES.decrypt(value, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8);
},
/** dialog确认*/ /** dialog确认*/
submitForm() { submitForm() {
this.$refs['form'].validate(valid => { this.$refs['form'].validate(valid => {
if (valid) { if (valid) {
if (this.form.businessId !== undefined) { if (this.form.businessId !== undefined) {
organizationUpdataApi(this.form, this.form.businessId).then(response => { const params = {
flag: this.form.flag,
apiSecretKey: this.form.apiSecretKey,
apiPubKey: this.form.apiPubKey,
secretKey: this.encrypt(this.form.secretKey),
accessKey: this.form.accessKey,
ips: this.form.ips,
institutionCode: this.form.institutionCode,
organizationalStructure: this.form.organizationalStructure,
startTime: this.form.startTime,
endTime: this.form.endTime,
remarks: this.form.remarks
}
organizationUpdataApi(params, this.form.businessId).then(response => {
if (response.code === 200) { if (response.code === 200) {
this.$message({ this.$message({
message: '修改成功', message: '修改成功',
...@@ -438,7 +487,20 @@ export default { ...@@ -438,7 +487,20 @@ export default {
} }
}) })
} else { } else {
organizationAddApi(this.form).then(response => { const paramsAdd = {
flag: this.form.flag,
apiSecretKey: this.form.apiSecretKey,
apiPubKey: this.form.apiPubKey,
secretKey: this.encrypt(this.form.secretKey),
accessKey: this.form.accessKey,
ips: this.form.ips,
institutionCode: this.form.institutionCode,
organizationalStructure: this.form.organizationalStructure,
startTime: this.form.startTime,
endTime: this.form.endTime,
remarks: this.form.remarks
}
organizationAddApi(paramsAdd).then(response => {
if (response.code === 200) { if (response.code === 200) {
this.$message({ this.$message({
message: '新增成功', type: 'success' message: '新增成功', type: 'success'
...@@ -459,6 +521,7 @@ export default { ...@@ -459,6 +521,7 @@ export default {
organizationGetDetailApi(userId).then(response => { organizationGetDetailApi(userId).then(response => {
this.open = true this.open = true
this.form = response.data this.form = response.data
this.form.secretKey = this.decrypt(response.data.secretKey)
if (this.form.startTime && this.form.endTime) { if (this.form.startTime && this.form.endTime) {
this.dateRange = [this.form.startTime.slice(0, 10), this.form.endTime.slice(0, 10)] this.dateRange = [this.form.startTime.slice(0, 10), this.form.endTime.slice(0, 10)]
} else { } else {
...@@ -475,6 +538,7 @@ export default { ...@@ -475,6 +538,7 @@ export default {
organizationGetDetailApi(userId).then(response => { organizationGetDetailApi(userId).then(response => {
this.open = true this.open = true
this.form = response.data this.form = response.data
this.form.secretKey = this.decrypt(response.data.secretKey)
if (this.form.startTime && this.form.endTime) { if (this.form.startTime && this.form.endTime) {
this.dateRange = [this.form.startTime.slice(0, 10), this.form.endTime.slice(0, 10)] this.dateRange = [this.form.startTime.slice(0, 10), this.form.endTime.slice(0, 10)]
} else { } else {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment