summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHATEC\SPVDEV001 <tri.susilo@altama.co.id>2023-08-18 11:02:39 +0700
committerHATEC\SPVDEV001 <tri.susilo@altama.co.id>2023-08-18 11:02:39 +0700
commitb6f6bf23f90ff0dfadf9bf0af8866c2cfc17aa9c (patch)
tree55030557d97f8c3376cdf3547bd619b6ab3a8b9c /src
parentf01f28a7eac76c6da5bf857bfc80fd347586ce7f (diff)
handling redirect login
Diffstat (limited to 'src')
-rw-r--r--src/core/components/layouts/BasicLayout.jsx10
-rw-r--r--src/lib/auth/components/LoginDesktop.jsx28
-rw-r--r--src/lib/auth/components/LoginMobile.jsx24
-rw-r--r--src/lib/auth/components/RegisterDesktop.jsx14
-rw-r--r--src/lib/auth/components/RegisterMobile.jsx13
-rw-r--r--src/lib/auth/hooks/useLogin.js19
-rw-r--r--src/pages/api/auth/[...nextauth].js6
7 files changed, 83 insertions, 31 deletions
diff --git a/src/core/components/layouts/BasicLayout.jsx b/src/core/components/layouts/BasicLayout.jsx
index 0fea1a3b..272440c2 100644
--- a/src/core/components/layouts/BasicLayout.jsx
+++ b/src/core/components/layouts/BasicLayout.jsx
@@ -20,18 +20,8 @@ const BasicLayout = ({ children }) => {
const [payloadWA, setPayloadWa] = useState(null)
const router = useRouter()
- const { data: session } = useSession()
- const auth = getAuth()
- const setting = async () => {
- setCookie('auth', JSON.stringify(session?.odooUser))
- }
useEffect(() => {
- if (!auth && session) {
- setting()
- }
- console.log('ini auth', auth)
- console.log('ini session', session)
const getIP = async () => {
const ip = await odooApi('GET', '/api/ip-address')
const data = {
diff --git a/src/lib/auth/components/LoginDesktop.jsx b/src/lib/auth/components/LoginDesktop.jsx
index 3a7477b9..42fa8896 100644
--- a/src/lib/auth/components/LoginDesktop.jsx
+++ b/src/lib/auth/components/LoginDesktop.jsx
@@ -9,27 +9,39 @@ import { useRouter } from 'next/router'
import { useContext, useEffect, useState } from 'react'
import { getAuth, setAuth } from '@/core/utils/auth'
import { setCookie } from 'cookies-next'
+import BottomPopup from '@/core/components/elements/Popup/BottomPopup'
+import Spinner from '@/core/components/elements/Spinner/Spinner'
+import LogoSpinner from '@/core/components/elements/Spinner/LogoSpinner'
+import odooApi from '@/core/api/odooApi'
const LoginDesktop = () => {
- const { handleSubmit, handleChangeInput, isLoading, isValid, alert, emailRef, passwordRef } =
+ const { handleSubmit, handleChangeInput, isLoading, isValid, alert, emailRef, passwordRef, handleGoogleSubmit } =
useLogin()
const router = useRouter()
const [query, setQuery] = useState(router?.query?.next || '/')
const { data: session } = useSession()
- const auth = getAuth()
const handleGoogle = async () => {
- const url = query != '/' ? '/login?next=' + query : '/login'
+ const url = query != '/' ? '/login?source=google&next=' + query : '/login?source=google'
await signIn('google', { callbackUrl: url })
}
-
useEffect(() => {
- if(session){
- setCookie('auth', JSON.stringify(session?.odooUser))
- router.push(query)
+ if (session) {
+ handleGoogleSubmit(session)
}
- },[session])
+ }, [session])
+
+ if (router.query.source) {
+ return (
+ <BottomPopup active={true} close=''>
+ <div className='leading-7 text-gray_r-12/80 flex justify-center'>Mohon Tunggu</div>
+ <div className='container flex justify-center my-4'>
+ <LogoSpinner width={48} height={48} />
+ </div>
+ </BottomPopup>
+ )
+ }
return (
<DesktopView>
diff --git a/src/lib/auth/components/LoginMobile.jsx b/src/lib/auth/components/LoginMobile.jsx
index 68ceb769..095f4174 100644
--- a/src/lib/auth/components/LoginMobile.jsx
+++ b/src/lib/auth/components/LoginMobile.jsx
@@ -9,27 +9,41 @@ import { useSession, signIn, SignOut } from 'next-auth/react'
import { useRouter } from 'next/router'
import { useEffect, useState } from 'react'
import { setCookie } from 'cookies-next'
+import BottomPopup from '@/core/components/elements/Popup/BottomPopup'
+import LogoSpinner from '@/core/components/elements/Spinner/LogoSpinner'
+import odooApi from '@/core/api/odooApi'
+import { getAuth } from '@/core/utils/auth'
const LoginMobile = () => {
- const { handleSubmit, handleChangeInput, isLoading, isValid, alert, emailRef, passwordRef } =
+ const { handleSubmit, handleChangeInput, isLoading, isValid, alert, emailRef, passwordRef, handleGoogleSubmit } =
useLogin()
const router = useRouter()
const [query, setQuery] = useState(router?.query?.next || '/')
const { data: session } = useSession()
+ const auth = getAuth()
const handleGoogle = async () => {
- const url = query != '/' ? '/login?next=' + query : '/login'
+ const url = query != '/' ? '/login?source=google&next=' + query : '/login?source=google'
await signIn('google', { callbackUrl: url })
- setCookie('auth', JSON.stringify(session?.odooUser))
}
useEffect(() => {
if (session) {
- setCookie('auth', JSON.stringify(session?.odooUser))
- router.push(query)
+ handleGoogleSubmit(session)
}
}, [session])
+ if (router.query.source) {
+ return (
+ <BottomPopup active={true} close={true}>
+ <div className='leading-7 text-gray_r-12/80 flex justify-center'>Mohon Tunggu</div>
+ <div className='container flex justify-center my-4'>
+ <LogoSpinner width={48} height={48} />
+ </div>
+ </BottomPopup>
+ )
+ }
+
return (
<MobileView>
<div className='p-6 pt-10 flex flex-col items-center min-h-screen'>
diff --git a/src/lib/auth/components/RegisterDesktop.jsx b/src/lib/auth/components/RegisterDesktop.jsx
index 86a5027d..a2bc98c2 100644
--- a/src/lib/auth/components/RegisterDesktop.jsx
+++ b/src/lib/auth/components/RegisterDesktop.jsx
@@ -10,6 +10,7 @@ import { useEffect } from 'react'
import { setCookie } from 'cookies-next'
import { signIn, useSession } from 'next-auth/react'
import { useRouter } from 'next/router'
+import LogoSpinner from '@/core/components/elements/Spinner/LogoSpinner'
const RegisterDesktop = () => {
const {
@@ -31,7 +32,7 @@ const RegisterDesktop = () => {
const router = useRouter()
const handleGoogle = async () => {
- await signIn('google', { callbackUrl: '/register' })
+ await signIn('google', { callbackUrl: '/register?source=google' })
}
useEffect(() => {
@@ -41,6 +42,17 @@ const RegisterDesktop = () => {
}
},[session])
+ if (router.query.source) {
+ return (
+ <BottomPopup active={true} close=''>
+ <div className='leading-7 text-gray_r-12/80 flex justify-center'>Mohon Tunggu</div>
+ <div className='container flex justify-center my-4'>
+ <LogoSpinner width={48} height={48} />
+ </div>
+ </BottomPopup>
+ )
+ }
+
return (
<DesktopView>
<div className='container mx-auto'>
diff --git a/src/lib/auth/components/RegisterMobile.jsx b/src/lib/auth/components/RegisterMobile.jsx
index c21c9325..2e918a14 100644
--- a/src/lib/auth/components/RegisterMobile.jsx
+++ b/src/lib/auth/components/RegisterMobile.jsx
@@ -11,6 +11,7 @@ import { signIn, useSession } from 'next-auth/react'
import { useRouter } from 'next/router'
import { setCookie } from 'cookies-next'
import { useEffect } from 'react'
+import LogoSpinner from '@/core/components/elements/Spinner/LogoSpinner'
const RegisterMobile = () => {
const {
@@ -32,7 +33,7 @@ const RegisterMobile = () => {
const router = useRouter()
const handleGoogle = async () => {
- await signIn('google', { callbackUrl: '/register' })
+ await signIn('google', { callbackUrl: '/register?source=google' })
}
useEffect(() => {
@@ -42,6 +43,16 @@ const RegisterMobile = () => {
}
},[session])
+ if (router.query.source) {
+ return (
+ <BottomPopup active={true} close=''>
+ <div className='leading-7 text-gray_r-12/80 flex justify-center'>Mohon Tunggu</div>
+ <div className='container flex justify-center my-4'>
+ <LogoSpinner width={48} height={48} />
+ </div>
+ </BottomPopup>
+ )
+ }
return (
<MobileView>
<div className='p-6 pt-10 flex flex-col items-center min-h-screen'>
diff --git a/src/lib/auth/hooks/useLogin.js b/src/lib/auth/hooks/useLogin.js
index 1d5ff43d..34605614 100644
--- a/src/lib/auth/hooks/useLogin.js
+++ b/src/lib/auth/hooks/useLogin.js
@@ -3,6 +3,9 @@ import { setAuth } from '@/core/utils/auth'
import { useRouter } from 'next/router'
import { useRef, useState } from 'react'
import loginApi from '../api/loginApi'
+import odooApi from '@/core/api/odooApi'
+import { setCookie } from 'cookies-next'
+import { useSession } from 'next-auth/react'
const useLogin = () => {
const router = useRouter()
@@ -60,6 +63,19 @@ const useLogin = () => {
}
}
+ const handleGoogleSubmit = async (session) => {
+ const params = {
+ access_token: session.accessToken
+ }
+ const data = await odooApi('POST', '/api/v1/user/validate-sso', params)
+ if (data.isAuth) {
+ session.odooUser = data.user
+ setCookie('auth', JSON.stringify(session?.odooUser))
+ router.push(router?.query?.next ?? '/')
+ return
+ }
+ }
+
return {
handleChangeInput,
handleSubmit,
@@ -67,7 +83,8 @@ const useLogin = () => {
isValid,
alert,
emailRef,
- passwordRef
+ passwordRef,
+ handleGoogleSubmit
}
}
diff --git a/src/pages/api/auth/[...nextauth].js b/src/pages/api/auth/[...nextauth].js
index b11ed097..3c433167 100644
--- a/src/pages/api/auth/[...nextauth].js
+++ b/src/pages/api/auth/[...nextauth].js
@@ -18,11 +18,7 @@ export default NextAuth({
},
async session({ session, token, user }) {
session.accessToken = token.accessToken
- const params = {
- access_token: session.accessToken
- }
- const data = await odooApi('POST', '/api/v1/user/validate-sso', params)
- session.odooUser = data.user
+
return session
}
},