From ac31042e693acdd6f13f7864fc92cc0dea498838 Mon Sep 17 00:00:00 2001 From: Dream Hunter Date: Sun, 11 Aug 2024 20:34:10 +0800 Subject: [PATCH] feat: add EMAIL_KV_BLACK_LIST (#394) --- CHANGELOG.md | 1 + frontend/package.json | 2 +- frontend/src/api/index.js | 2 +- frontend/src/views/admin/AccountSettings.vue | 15 ++++++++++++++- worker/src/admin_api/index.ts | 12 ++++++++++-- worker/src/constants.ts | 3 ++- worker/src/email/black_list.ts | 16 ++++++++++++++++ worker/src/email/index.ts | 5 +++-- 8 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 worker/src/email/black_list.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index dfc2c3f8..6a2efc7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ## main(v0.7.1) - fix: 修复用户角色加载失败的问题 +- feat: admin 账号设置增加来源邮件地址黑名单配置 ## v0.7.0 diff --git a/frontend/package.json b/frontend/package.json index 0d3b3b4c..03c39ba0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "cloudflare_temp_email", - "version": "0.7.0", + "version": "0.7.1", "private": true, "type": "module", "scripts": { diff --git a/frontend/src/api/index.js b/frontend/src/api/index.js index 3e7ccd80..b9c146ef 100644 --- a/frontend/src/api/index.js +++ b/frontend/src/api/index.js @@ -128,7 +128,7 @@ const getUserSettings = async (message) => { const res = await api.fetch("/user_api/settings") Object.assign(userSettings.value, res) } catch (error) { - message.error(error.message || "error"); + message?.error(error.message || "error"); } finally { userSettings.value.fetched = true; } diff --git a/frontend/src/views/admin/AccountSettings.vue b/frontend/src/views/admin/AccountSettings.vue index aa7397fb..84034108 100644 --- a/frontend/src/views/admin/AccountSettings.vue +++ b/frontend/src/views/admin/AccountSettings.vue @@ -11,20 +11,24 @@ const message = useMessage() const { t } = useI18n({ messages: { en: { + tip: 'You can manually input the following multiple select input', save: 'Save', successTip: 'Save Success', address_block_list: 'Address Block Keywords for Users(Admin can skip)', address_block_list_placeholder: 'Please enter the keywords you want to block', send_address_block_list: 'Address Block Keywords for send email', verified_address_list: 'Verified Address List(Can send email by cf internal api)', + fromBlockList: 'Block Keywords for receive email', }, zh: { + tip: '您可以手动输入以下多选输入框', save: '保存', successTip: '保存成功', address_block_list: '邮件地址屏蔽关键词(管理员可跳过检查)', address_block_list_placeholder: '请输入您想要屏蔽的关键词', send_address_block_list: '发送邮件地址屏蔽关键词', verified_address_list: '已验证地址列表(可通过 cf 内部 api 发送邮件)', + fromBlockList: '接收邮件地址屏蔽关键词', } } }); @@ -32,6 +36,7 @@ const { t } = useI18n({ const addressBlockList = ref([]) const sendAddressBlockList = ref([]) const verifiedAddressList = ref([]) +const fromBlockList = ref([]) const fetchData = async () => { try { @@ -39,6 +44,7 @@ const fetchData = async () => { addressBlockList.value = res.blockList || [] sendAddressBlockList.value = res.sendBlockList || [] verifiedAddressList.value = res.verifiedAddressList || [] + fromBlockList.value = res.fromBlockList || [] } catch (error) { message.error(error.message || "error"); } @@ -51,7 +57,8 @@ const save = async () => { body: JSON.stringify({ blockList: addressBlockList.value || [], sendBlockList: sendAddressBlockList.value || [], - verifiedAddressList: verifiedAddressList.value || [] + verifiedAddressList: verifiedAddressList.value || [], + fromBlockList: fromBlockList.value || [], }) }) message.success(t('successTip')) @@ -69,6 +76,9 @@ onMounted(async () => {