summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-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
5 files changed, 82 insertions, 16 deletions
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
}
}