mirror of
https://github.com/d0zingcat/NotionNext.git
synced 2026-05-29 23:16:51 +00:00
openwrite白名单
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user