mirror of
https://github.com/langgenius/dify.git
synced 2024-11-16 03:32:23 +08:00
fix: use the getNewAccessToken function from the hook useRefreshToken to save access_token and refresh_token
This commit is contained in:
parent
19e31f6818
commit
c4f5d54cdb
|
@ -17,17 +17,21 @@ const SwrInitor = ({
|
|||
const consoleToken = searchParams.get('access_token')
|
||||
const refreshToken = searchParams.get('refresh_token')
|
||||
const consoleTokenFromLocalStorage = localStorage?.getItem('console_token')
|
||||
const refreshTokenFromLocalStorage = localStorage?.getItem('refresh_token')
|
||||
const [init, setInit] = useState(false)
|
||||
const { getNewAccessToken } = useRefreshToken()
|
||||
|
||||
useEffect(() => {
|
||||
if (!(consoleToken || refreshToken || consoleTokenFromLocalStorage)) {
|
||||
if (!(consoleToken || refreshToken || consoleTokenFromLocalStorage || refreshTokenFromLocalStorage)) {
|
||||
router.replace('/signin')
|
||||
return
|
||||
}
|
||||
(async () => {
|
||||
await getNewAccessToken(localStorage?.getItem('console_token') || '', localStorage?.getItem('refresh_token') || '')
|
||||
})()
|
||||
if (consoleTokenFromLocalStorage && refreshTokenFromLocalStorage)
|
||||
getNewAccessToken(consoleTokenFromLocalStorage, refreshTokenFromLocalStorage)
|
||||
|
||||
if (consoleToken && refreshToken)
|
||||
getNewAccessToken(consoleToken, refreshToken)
|
||||
|
||||
router.replace('/apps', { forceOptimisticNavigation: false } as any)
|
||||
setInit(true)
|
||||
}, [])
|
||||
|
|
|
@ -11,6 +11,7 @@ import { IS_CE_EDITION, SUPPORT_MAIL_LOGIN, apiPrefix, emailRegex } from '@/conf
|
|||
import Button from '@/app/components/base/button'
|
||||
import { login, oauth } from '@/service/common'
|
||||
import { getPurifyHref } from '@/utils'
|
||||
import useRefreshToken from '@/hooks/use-refresh-token'
|
||||
|
||||
type IState = {
|
||||
formValid: boolean
|
||||
|
@ -61,6 +62,7 @@ function reducer(state: IState, action: IAction) {
|
|||
|
||||
const NormalForm = () => {
|
||||
const { t } = useTranslation()
|
||||
const { getNewAccessToken } = useRefreshToken()
|
||||
const useEmailLogin = IS_CE_EDITION || SUPPORT_MAIL_LOGIN
|
||||
|
||||
const router = useRouter()
|
||||
|
@ -95,8 +97,7 @@ const NormalForm = () => {
|
|||
},
|
||||
})
|
||||
if (res.result === 'success') {
|
||||
localStorage.setItem('console_token', res.data.access_token)
|
||||
localStorage.setItem('refresh_token', res.data.refresh_token)
|
||||
getNewAccessToken(res.data.access_token, res.data.refresh_token)
|
||||
router.replace('/apps')
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -7,6 +7,7 @@ import cn from '@/utils/classnames'
|
|||
import Toast from '@/app/components/base/toast'
|
||||
import { getUserOAuth2SSOUrl, getUserOIDCSSOUrl, getUserSAMLSSOUrl } from '@/service/sso'
|
||||
import Button from '@/app/components/base/button'
|
||||
import useRefreshToken from '@/hooks/use-refresh-token'
|
||||
|
||||
type UserSSOFormProps = {
|
||||
protocol: string
|
||||
|
@ -15,6 +16,7 @@ type UserSSOFormProps = {
|
|||
const UserSSOForm: FC<UserSSOFormProps> = ({
|
||||
protocol,
|
||||
}) => {
|
||||
const { getNewAccessToken } = useRefreshToken()
|
||||
const searchParams = useSearchParams()
|
||||
const consoleToken = searchParams.get('access_token')
|
||||
const refreshToken = searchParams.get('refresh_token')
|
||||
|
@ -27,8 +29,7 @@ const UserSSOForm: FC<UserSSOFormProps> = ({
|
|||
|
||||
useEffect(() => {
|
||||
if (refreshToken && consoleToken) {
|
||||
localStorage.setItem('refresh_token', refreshToken)
|
||||
localStorage.setItem('console_token', consoleToken)
|
||||
getNewAccessToken(consoleToken, refreshToken)
|
||||
router.replace('/apps')
|
||||
}
|
||||
|
||||
|
|
|
@ -38,8 +38,17 @@ import type {
|
|||
import type { RETRIEVE_METHOD } from '@/types/app'
|
||||
import type { SystemFeatures } from '@/types/feature'
|
||||
|
||||
export const login: Fetcher<CommonResponse & { data: { access_token: string;refresh_token: string } }, { url: string; body: Record<string, any> }> = ({ url, body }) => {
|
||||
return post(url, { body }) as Promise<CommonResponse & { data: { access_token: string;refresh_token: string } }>
|
||||
type LoginSuccess = {
|
||||
result: 'success'
|
||||
data: { access_token: string;refresh_token: string }
|
||||
}
|
||||
type LoginFail = {
|
||||
result: 'fail'
|
||||
data: string
|
||||
}
|
||||
type LoginResponse = LoginSuccess | LoginFail
|
||||
export const login: Fetcher<LoginResponse, { url: string; body: Record<string, any> }> = ({ url, body }) => {
|
||||
return post(url, { body }) as Promise<LoginResponse>
|
||||
}
|
||||
|
||||
export const fetchNewToken: Fetcher<CommonResponse & { data: { access_token: string; refresh_token: string } }, { body: Record<string, any> }> = ({ body }) => {
|
||||
|
|
|
@ -6205,6 +6205,11 @@ jsonc-eslint-parser@^2.0.4, jsonc-eslint-parser@^2.1.0:
|
|||
array-includes "^3.1.5"
|
||||
object.assign "^4.1.3"
|
||||
|
||||
jwt-decode@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-4.0.0.tgz#2270352425fd413785b2faf11f6e755c5151bd4b"
|
||||
integrity sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==
|
||||
|
||||
katex@^0.16.0, katex@^0.16.10:
|
||||
version "0.16.10"
|
||||
resolved "https://registry.npmjs.org/katex/-/katex-0.16.10.tgz"
|
||||
|
@ -8816,7 +8821,14 @@ stringify-entities@^4.0.0:
|
|||
character-entities-html4 "^2.0.0"
|
||||
character-entities-legacy "^3.0.0"
|
||||
|
||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
|
||||
version "6.0.1"
|
||||
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
|
||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||
dependencies:
|
||||
ansi-regex "^5.0.1"
|
||||
|
||||
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
|
||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||
|
@ -9653,8 +9665,7 @@ word-wrap@^1.2.3:
|
|||
resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz"
|
||||
integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
|
||||
|
||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
|
||||
name wrap-ansi-cjs
|
||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
|
||||
version "7.0.0"
|
||||
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
|
||||
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
||||
|
@ -9672,6 +9683,15 @@ wrap-ansi@^6.2.0:
|
|||
string-width "^4.1.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
wrap-ansi@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
|
||||
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
||||
dependencies:
|
||||
ansi-styles "^4.0.0"
|
||||
string-width "^4.1.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
wrap-ansi@^8.1.0:
|
||||
version "8.1.0"
|
||||
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz"
|
||||
|
|
Loading…
Reference in New Issue
Block a user