Pārlūkot izejas kodu

fix: keep search params in web app url when needs authorize (#21717)

tags/1.5.1
NFish pirms 4 mēnešiem
vecāks
revīzija
9588a64487
Revīzijas autora e-pasta adrese nav piesaistīta nevienam kontam

+ 6
- 3
web/app/(shareLayout)/layout.tsx Parādīt failu

} }


let appCode: string | null = null let appCode: string | null = null
if (redirectUrl)
appCode = redirectUrl?.split('/').pop() || null
else
if (redirectUrl) {
const url = new URL(`${window.location.origin}${decodeURIComponent(redirectUrl)}`)
appCode = url.pathname.split('/').pop() || null
}
else {
appCode = pathname.split('/').pop() || null appCode = pathname.split('/').pop() || null
}


if (!appCode) if (!appCode)
return return

+ 5
- 2
web/app/(shareLayout)/webapp-signin/check-code/page.tsx Parādīt failu

const redirectUrl = searchParams.get('redirect_url') const redirectUrl = searchParams.get('redirect_url')


const getAppCodeFromRedirectUrl = useCallback(() => { const getAppCodeFromRedirectUrl = useCallback(() => {
const appCode = redirectUrl?.split('/').pop()
if (!redirectUrl)
return null
const url = new URL(`${window.location.origin}${decodeURIComponent(redirectUrl)}`)
const appCode = url.pathname.split('/').pop()
if (!appCode) if (!appCode)
return null return null


localStorage.setItem('webapp_access_token', ret.data.access_token) localStorage.setItem('webapp_access_token', ret.data.access_token)
const tokenResp = await fetchAccessToken({ appCode, webAppAccessToken: ret.data.access_token }) const tokenResp = await fetchAccessToken({ appCode, webAppAccessToken: ret.data.access_token })
await setAccessToken(appCode, tokenResp.access_token) await setAccessToken(appCode, tokenResp.access_token)
router.replace(redirectUrl)
router.replace(decodeURIComponent(redirectUrl))
} }
} }
catch (error) { console.error(error) } catch (error) { console.error(error) }

+ 4
- 1
web/app/(shareLayout)/webapp-signin/components/external-member-sso-auth.tsx Parādīt failu

} }


const getAppCodeFromRedirectUrl = useCallback(() => { const getAppCodeFromRedirectUrl = useCallback(() => {
const appCode = redirectUrl?.split('/').pop()
if (!redirectUrl)
return null
const url = new URL(`${window.location.origin}${decodeURIComponent(redirectUrl)}`)
const appCode = url.pathname.split('/').pop()
if (!appCode) if (!appCode)
return null return null



+ 6
- 2
web/app/(shareLayout)/webapp-signin/components/mail-and-password-auth.tsx Parādīt failu

'use client'
import Link from 'next/link' import Link from 'next/link'
import { useCallback, useState } from 'react' import { useCallback, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
const redirectUrl = searchParams.get('redirect_url') const redirectUrl = searchParams.get('redirect_url')


const getAppCodeFromRedirectUrl = useCallback(() => { const getAppCodeFromRedirectUrl = useCallback(() => {
const appCode = redirectUrl?.split('/').pop()
if (!redirectUrl)
return null
const url = new URL(`${window.location.origin}${decodeURIComponent(redirectUrl)}`)
const appCode = url.pathname.split('/').pop()
if (!appCode) if (!appCode)
return null return null


localStorage.setItem('webapp_access_token', res.data.access_token) localStorage.setItem('webapp_access_token', res.data.access_token)
const tokenResp = await fetchAccessToken({ appCode, webAppAccessToken: res.data.access_token }) const tokenResp = await fetchAccessToken({ appCode, webAppAccessToken: res.data.access_token })
await setAccessToken(appCode, tokenResp.access_token) await setAccessToken(appCode, tokenResp.access_token)
router.replace(redirectUrl)
router.replace(decodeURIComponent(redirectUrl))
} }
else { else {
Toast.notify({ Toast.notify({

+ 4
- 1
web/app/(shareLayout)/webapp-signin/components/sso-auth.tsx Parādīt failu



const redirectUrl = searchParams.get('redirect_url') const redirectUrl = searchParams.get('redirect_url')
const getAppCodeFromRedirectUrl = useCallback(() => { const getAppCodeFromRedirectUrl = useCallback(() => {
const appCode = redirectUrl?.split('/').pop()
if (!redirectUrl)
return null
const url = new URL(`${window.location.origin}${decodeURIComponent(redirectUrl)}`)
const appCode = url.pathname.split('/').pop()
if (!appCode) if (!appCode)
return null return null



+ 7
- 4
web/app/(shareLayout)/webapp-signin/page.tsx Parādīt failu

} }


const getAppCodeFromRedirectUrl = useCallback(() => { const getAppCodeFromRedirectUrl = useCallback(() => {
const appCode = redirectUrl?.split('/').pop()
if (!redirectUrl)
return null
const url = new URL(`${window.location.origin}${decodeURIComponent(redirectUrl)}`)
const appCode = url.pathname.split('/').pop()
if (!appCode) if (!appCode)
return null return null


localStorage.setItem('webapp_access_token', tokenFromUrl) localStorage.setItem('webapp_access_token', tokenFromUrl)
const tokenResp = await fetchAccessToken({ appCode, webAppAccessToken: tokenFromUrl }) const tokenResp = await fetchAccessToken({ appCode, webAppAccessToken: tokenFromUrl })
await setAccessToken(appCode, tokenResp.access_token) await setAccessToken(appCode, tokenResp.access_token)
router.replace(redirectUrl)
router.replace(decodeURIComponent(redirectUrl))
return return
} }
if (appCode && redirectUrl && localStorage.getItem('webapp_access_token')) { if (appCode && redirectUrl && localStorage.getItem('webapp_access_token')) {
const tokenResp = await fetchAccessToken({ appCode, webAppAccessToken: localStorage.getItem('webapp_access_token') }) const tokenResp = await fetchAccessToken({ appCode, webAppAccessToken: localStorage.getItem('webapp_access_token') })
await setAccessToken(appCode, tokenResp.access_token) await setAccessToken(appCode, tokenResp.access_token)
router.replace(redirectUrl)
router.replace(decodeURIComponent(redirectUrl))
} }
})() })()
}, [getAppCodeFromRedirectUrl, redirectUrl, router, tokenFromUrl, message]) }, [getAppCodeFromRedirectUrl, redirectUrl, router, tokenFromUrl, message])


useEffect(() => { useEffect(() => {
if (webAppAccessMode && webAppAccessMode === AccessMode.PUBLIC && redirectUrl) if (webAppAccessMode && webAppAccessMode === AccessMode.PUBLIC && redirectUrl)
router.replace(redirectUrl)
router.replace(decodeURIComponent(redirectUrl))
}, [webAppAccessMode, router, redirectUrl]) }, [webAppAccessMode, router, redirectUrl])


if (tokenFromUrl) { if (tokenFromUrl) {

+ 0
- 8
web/app/components/share/text-generation/index.tsx Parādīt failu



const router = useRouter() const router = useRouter()
const pathname = usePathname() const pathname = usePathname()
useEffect(() => {
const params = new URLSearchParams(searchParams)
if (params.has('mode')) {
params.delete('mode')
router.replace(`${pathname}?${params.toString()}`)
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])


// Notice this situation isCallBatchAPI but not in batch tab // Notice this situation isCallBatchAPI but not in batch tab
const [isCallBatchAPI, setIsCallBatchAPI] = useState(false) const [isCallBatchAPI, setIsCallBatchAPI] = useState(false)

+ 1
- 1
web/service/base.ts Parādīt failu



function requiredWebSSOLogin(message?: string, code?: number) { function requiredWebSSOLogin(message?: string, code?: number) {
const params = new URLSearchParams() const params = new URLSearchParams()
params.append('redirect_url', globalThis.location.pathname)
params.append('redirect_url', encodeURIComponent(`${globalThis.location.pathname}${globalThis.location.search}`))
if (message) if (message)
params.append('message', message) params.append('message', message)
if (code) if (code)

Notiek ielāde…
Atcelt
Saglabāt