openwrite白名单

This commit is contained in:
tangly1024.com
2024-09-05 15:56:44 +08:00
parent 1610ab659d
commit b06cd199e3
2 changed files with 102 additions and 53 deletions

View File

@@ -1,5 +1,6 @@
import { siteConfig } from '@/lib/config'
import { isBrowser, loadExternalResource } from '@/lib/utils'
import { useRouter } from 'next/router'
import { useEffect } from 'react'
/**
* OpenWrite公众号导流插件
@@ -8,6 +9,7 @@ import { useEffect } from 'react'
* @returns
*/
const OpenWrite = () => {
const router = useRouter()
const qrcode = siteConfig('OPEN_WRITE_QRCODE', '请配置公众号二维码')
const blogId = siteConfig('OPEN_WRITE_BLOG_ID')
const name = siteConfig('OPEN_WRITE_NAME', '请配置公众号名')
@@ -17,8 +19,16 @@ const OpenWrite = () => {
'OPEN_WRITE_BTN_TEXT',
'原创不易,完成人机检测,阅读全文'
)
// 白名单
const whiteList = siteConfig('OPEN_WRITE_WHITE_LIST', '')
const loadOpenWrite = async () => {
const existWhite = existedWhiteList(router.asPath, whiteList)
// 如果当前页面在白名单中,则屏蔽加锁
if (existWhite) {
return
}
try {
await loadExternalResource(
'https://readmore.openwrite.cn/js/readmore-2.0.js',
@@ -58,4 +68,35 @@ const OpenWrite = () => {
return <></>
}
/**
* 检查白名单
* @param {*} path 当前url的字符串
* @param {*} whiteListStr 白名单字符串
*/
function existedWhiteList(path, whiteListStr) {
// 参数检查
if (!path || !whiteListStr) {
return true
}
// 提取 path 最后一个斜杠后的内容,去掉前面的斜杆
// 移除查询参数(从 '?' 开始的部分)和 `.html` 后缀
const processedPath = path
.replace(/\?.*$/, '') // 移除查询参数
.replace(/.*\/([^\/]+)(?:\.html)?$/, '$1') // 去掉前面的路径和 .html
// 严格检查白名单字符串中是否包含处理后的 path
// const whiteListArray = whiteListStr.split(',')
// return whiteListArray.includes(processedPath)
// 放宽判断
const isWhite = whiteListStr.includes(processedPath)
if (isWhite) {
console.log('OpenWrite白名单', processedPath)
}
return isWhite
}
export default OpenWrite