feat:apo auto login

pull/17608/head
keting lu 1 year ago
parent 44a56f8a30
commit 2fa4dcb414

@ -8,10 +8,12 @@ import Header from '@/app/components/header'
import { EventEmitterContextProvider } from '@/context/event-emitter' import { EventEmitterContextProvider } from '@/context/event-emitter'
import { ProviderContextProvider } from '@/context/provider-context' import { ProviderContextProvider } from '@/context/provider-context'
import { ModalContextProvider } from '@/context/modal-context' import { ModalContextProvider } from '@/context/modal-context'
import MessageListener from '../components/base/message-listener'
const Layout = ({ children }: { children: ReactNode }) => { const Layout = ({ children }: { children: ReactNode }) => {
return ( return (
<> <>
<MessageListener />
<GA gaType={GaType.admin} /> <GA gaType={GaType.admin} />
<SwrInitor> <SwrInitor>
<AppContextProvider> <AppContextProvider>

@ -0,0 +1,23 @@
'use client'
import { useEffect } from 'react'
const MessageListener = () => {
useEffect(() => {
const handleMessage = (event: MessageEvent) => {
console.log('Received message from A:', event.data)
if(event.data.action === 'auto-login') {
localStorage.setItem('auto-login', JSON.stringify(event.data.data))
event.source.postMessage('got', event.origin)
}
}
window.addEventListener('message', handleMessage)
return () => {
window.removeEventListener('message', handleMessage)
}
}, [])
return null
}
export default MessageListener

@ -1,5 +1,5 @@
import Link from 'next/link' import Link from 'next/link'
import { useState } from 'react' import { useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useRouter, useSearchParams } from 'next/navigation' import { useRouter, useSearchParams } from 'next/navigation'
import { useContext } from 'use-context-selector' import { useContext } from 'use-context-selector'
@ -102,6 +102,23 @@ export default function MailAndPasswordAuth({ isInvite, isEmailSetup, allowRegis
setIsLoading(false) setIsLoading(false)
} }
} }
const autoLogin = async (data) => {
const res = await login({
url: '/login',
body: data,
})
if (res.result === 'success') {
localStorage.setItem('console_token', res.data.access_token)
localStorage.setItem('refresh_token', res.data.refresh_token)
router.replace('/apps')
}
}
useEffect(() => {
if(localStorage.getItem('auto-login')) {
autoLogin(JSON.parse(localStorage.getItem('auto-login')))
localStorage.removeItem('auto-login')
}
}, [])
return <form onSubmit={() => { }}> return <form onSubmit={() => { }}>
<div className='mb-3'> <div className='mb-3'>

Loading…
Cancel
Save