mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 10:53:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { CONVERSATION_ID_INFO } from '../base/chat/constants'
 | |
| import { fetchAccessToken } from '@/service/share'
 | |
| import { getProcessedSystemVariablesFromUrlParams } from '../base/chat/utils'
 | |
| 
 | |
| export const isTokenV1 = (token: Record<string, any>) => {
 | |
|   return !token.version
 | |
| }
 | |
| 
 | |
| export const getInitialTokenV2 = (): Record<string, any> => ({
 | |
|   version: 2,
 | |
| })
 | |
| 
 | |
| export const checkOrSetAccessToken = async (appCode?: string) => {
 | |
|   const sharedToken = appCode || globalThis.location.pathname.split('/').slice(-1)[0]
 | |
|   const userId = (await getProcessedSystemVariablesFromUrlParams()).user_id
 | |
|   const accessToken = localStorage.getItem('token') || JSON.stringify(getInitialTokenV2())
 | |
|   let accessTokenJson = getInitialTokenV2()
 | |
|   try {
 | |
|     accessTokenJson = JSON.parse(accessToken)
 | |
|     if (isTokenV1(accessTokenJson))
 | |
|       accessTokenJson = getInitialTokenV2()
 | |
|   }
 | |
|   catch {
 | |
| 
 | |
|   }
 | |
| 
 | |
|   if (!accessTokenJson[sharedToken]?.[userId || 'DEFAULT']) {
 | |
|     const webAppAccessToken = localStorage.getItem('webapp_access_token')
 | |
|     const res = await fetchAccessToken({ appCode: sharedToken, userId, webAppAccessToken })
 | |
|     accessTokenJson[sharedToken] = {
 | |
|       ...accessTokenJson[sharedToken],
 | |
|       [userId || 'DEFAULT']: res.access_token,
 | |
|     }
 | |
|     localStorage.setItem('token', JSON.stringify(accessTokenJson))
 | |
|   }
 | |
| }
 | |
| 
 | |
| export const setAccessToken = (sharedToken: string, token: string, user_id?: string) => {
 | |
|   const accessToken = localStorage.getItem('token') || JSON.stringify(getInitialTokenV2())
 | |
|   let accessTokenJson = getInitialTokenV2()
 | |
|   try {
 | |
|     accessTokenJson = JSON.parse(accessToken)
 | |
|     if (isTokenV1(accessTokenJson))
 | |
|       accessTokenJson = getInitialTokenV2()
 | |
|   }
 | |
|   catch {
 | |
| 
 | |
|   }
 | |
| 
 | |
|   localStorage.removeItem(CONVERSATION_ID_INFO)
 | |
| 
 | |
|   accessTokenJson[sharedToken] = {
 | |
|     ...accessTokenJson[sharedToken],
 | |
|     [user_id || 'DEFAULT']: token,
 | |
|   }
 | |
|   localStorage.setItem('token', JSON.stringify(accessTokenJson))
 | |
| }
 | |
| 
 | |
| export const removeAccessToken = () => {
 | |
|   localStorage.removeItem('token')
 | |
|   localStorage.removeItem('webapp_access_token')
 | |
| }
 | 
