数据库文档编写,开发规范文档,数据库接入
This commit is contained in:
62
utils/authRedirect.uts
Normal file
62
utils/authRedirect.uts
Normal file
@@ -0,0 +1,62 @@
|
||||
export type AuthRedirectOptions = {
|
||||
loginPath?: string
|
||||
registerPath?: string
|
||||
fallbackUrl?: string
|
||||
}
|
||||
|
||||
function normalizePath(path: string): string {
|
||||
if (!path) return ''
|
||||
return path.startsWith('/') ? path : `/${path}`
|
||||
}
|
||||
|
||||
function safeEncode(url: string): string {
|
||||
try {
|
||||
return encodeURIComponent(url)
|
||||
} catch (_) {
|
||||
return url
|
||||
}
|
||||
}
|
||||
|
||||
export function getCurrentPageUrlWithQuery(): string {
|
||||
const pages = getCurrentPages() as any[]
|
||||
const currentPage = pages.length > 0 ? pages[pages.length - 1] : null
|
||||
if (!currentPage) return ''
|
||||
|
||||
const route = currentPage.route as string | null
|
||||
const options = (currentPage.options ?? {}) as Record<string, any>
|
||||
if (!route) return ''
|
||||
|
||||
const path = normalizePath(route)
|
||||
const keys = Object.keys(options)
|
||||
if (keys.length === 0) return path
|
||||
|
||||
const query = keys
|
||||
.filter((k) => options[k] != null)
|
||||
.map((k) => `${k}=${encodeURIComponent(String(options[k]))}`)
|
||||
.join('&')
|
||||
return query.length > 0 ? `${path}?${query}` : path
|
||||
}
|
||||
|
||||
export function toLoginWithRedirect(redirectUrl?: string, opts?: AuthRedirectOptions) {
|
||||
const loginPath = opts?.loginPath ?? '/pages/user/login'
|
||||
const fallback = opts?.fallbackUrl ?? '/pages/mall/consumer/index'
|
||||
const target = (redirectUrl != null && redirectUrl.length > 0)
|
||||
? redirectUrl
|
||||
: (getCurrentPageUrlWithQuery() || fallback)
|
||||
|
||||
uni.navigateTo({
|
||||
url: `${loginPath}?redirect=${safeEncode(target)}`
|
||||
})
|
||||
}
|
||||
|
||||
export function toRegisterWithRedirect(redirectUrl?: string, opts?: AuthRedirectOptions) {
|
||||
const registerPath = opts?.registerPath ?? '/pages/user/register'
|
||||
const fallback = opts?.fallbackUrl ?? '/pages/mall/consumer/index'
|
||||
const target = (redirectUrl != null && redirectUrl.length > 0)
|
||||
? redirectUrl
|
||||
: (getCurrentPageUrlWithQuery() || fallback)
|
||||
|
||||
uni.navigateTo({
|
||||
url: `${registerPath}?redirect=${safeEncode(target)}`
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user