fix: stop forwarding public source query

master
weizong song 4 months ago
parent b3e7c2a318
commit 2d875c9611

@ -15,21 +15,15 @@ import './admin/routeMeta'
const MainLayout = () => import('../layouts/MainLayout.vue')
function sourceQueryFrom(to: { query?: Record<string, unknown> }): { src: string } | undefined {
const src = typeof to.query?.src === 'string' ? to.query.src.trim() : ''
return /^[A-Za-z0-9_-]{2,64}$/.test(src) ? { src } : undefined
}
function participantRootRedirect(to?: { query?: Record<string, unknown> }) {
function participantRootRedirect() {
const t = localStorage.getItem(TOKEN_KEY)
const s = localStorage.getItem(PARTICIPANT_COMPETITION_SLUG_KEY)
const query = to ? sourceQueryFrom(to) : undefined
if (s) {
return t
? { name: 'participant-apply', params: { slug: s }, query, replace: true as const }
: { name: 'participant-login', params: { slug: s }, query, replace: true as const }
? { name: 'participant-apply', params: { slug: s }, replace: true as const }
: { name: 'participant-login', params: { slug: s }, replace: true as const }
}
return { path: '/c', query, replace: true as const }
return { path: '/c', replace: true as const }
}
const router = createRouter({
@ -179,13 +173,9 @@ router.beforeEach(async (to) => {
if (to.matched.some((r) => r.meta.requiresAuth) && !participantToken) {
const slug = to.params.slug != null ? String(to.params.slug) : ''
if (slug) {
return {
name: 'participant-login',
params: { slug },
query: { redirect: to.fullPath, ...sourceQueryFrom(to) },
}
return { name: 'participant-login', params: { slug }, query: { redirect: to.fullPath } }
}
return { path: '/c', query: { redirect: to.fullPath, ...sourceQueryFrom(to) } }
return { path: '/c', query: { redirect: to.fullPath } }
}
if (to.meta.guestOnly && participantToken) {

@ -1,9 +1,8 @@
<script setup lang="ts">
import { ref } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { useRouter } from 'vue-router'
import 'bootstrap/dist/css/bootstrap.min.css'
const route = useRoute()
const router = useRouter()
const slugInput = ref('')
const error = ref('')
@ -15,12 +14,7 @@ function navigate() {
error.value = '请填写访问地址'
return
}
const src = typeof route.query.src === 'string' ? route.query.src.trim() : ''
void router.push({
name: 'participant-login',
params: { slug: s },
query: /^[A-Za-z0-9_-]{2,64}$/.test(src) ? { src } : undefined,
})
void router.push({ name: 'participant-login', params: { slug: s } })
}
</script>

Loading…
Cancel
Save