From 4d021a4634a6bc84ee25f0d43cbc6450d94265f0 Mon Sep 17 00:00:00 2001 From: "HATEC\\SPVDEV001" Date: Mon, 31 Jul 2023 14:08:34 +0700 Subject: google sing up --- src/lib/auth/components/LoginDesktop.jsx | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/lib/auth') diff --git a/src/lib/auth/components/LoginDesktop.jsx b/src/lib/auth/components/LoginDesktop.jsx index 8ce2e4e3..74d259a8 100644 --- a/src/lib/auth/components/LoginDesktop.jsx +++ b/src/lib/auth/components/LoginDesktop.jsx @@ -3,11 +3,15 @@ import useLogin from '../hooks/useLogin' import Link from '@/core/components/elements/Link/Link' import PageContent from '@/lib/content/components/PageContent' import Alert from '@/core/components/elements/Alert/Alert' +import {useSession, signIn, SignOut} from 'next-auth/react' const LoginDesktop = () => { const { handleSubmit, handleChangeInput, isLoading, isValid, alert, emailRef, passwordRef } = useLogin() + const {data : session } = useSession + console.log('ini google', session) + return (
@@ -60,6 +64,13 @@ const LoginDesktop = () => { {!isLoading ? 'Masuk' : 'Loading...'} +
Belum punya akun Indoteknik?{' '} -- cgit v1.2.3 From 4cfe9157d64a76bf9913fe599d908497a18f5316 Mon Sep 17 00:00:00 2001 From: "HATEC\\SPVDEV001" Date: Wed, 9 Aug 2023 10:45:53 +0700 Subject: google sign in --- src/lib/auth/components/LoginDesktop.jsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/lib/auth') diff --git a/src/lib/auth/components/LoginDesktop.jsx b/src/lib/auth/components/LoginDesktop.jsx index 74d259a8..f5aa0018 100644 --- a/src/lib/auth/components/LoginDesktop.jsx +++ b/src/lib/auth/components/LoginDesktop.jsx @@ -9,8 +9,8 @@ const LoginDesktop = () => { const { handleSubmit, handleChangeInput, isLoading, isValid, alert, emailRef, passwordRef } = useLogin() - const {data : session } = useSession - console.log('ini google', session) + const { data } = useSession() + console.log('ini google', data) return ( @@ -66,10 +66,10 @@ const LoginDesktop = () => {
-- cgit v1.2.3 From 01e86fb4a54b801a9b8124455611c312e5de4af0 Mon Sep 17 00:00:00 2001 From: "HATEC\\SPVDEV001" Date: Mon, 14 Aug 2023 15:04:45 +0700 Subject: google sign in --- src/lib/auth/components/LoginDesktop.jsx | 66 +++++++++++++++++++++++++++----- src/lib/auth/components/LoginMobile.jsx | 32 ++++++++++++++++ 2 files changed, 89 insertions(+), 9 deletions(-) (limited to 'src/lib/auth') diff --git a/src/lib/auth/components/LoginDesktop.jsx b/src/lib/auth/components/LoginDesktop.jsx index f5aa0018..e3bff492 100644 --- a/src/lib/auth/components/LoginDesktop.jsx +++ b/src/lib/auth/components/LoginDesktop.jsx @@ -3,15 +3,50 @@ import useLogin from '../hooks/useLogin' import Link from '@/core/components/elements/Link/Link' import PageContent from '@/lib/content/components/PageContent' import Alert from '@/core/components/elements/Alert/Alert' -import {useSession, signIn, SignOut} from 'next-auth/react' +import { useSession, signIn, SignOut } from 'next-auth/react' +import Image from 'next/image' +import { useRouter } from 'next/router' +import { useEffect, useState } from 'react' +import Spinner from '@/core/components/elements/Spinner/Spinner' const LoginDesktop = () => { const { handleSubmit, handleChangeInput, isLoading, isValid, alert, emailRef, passwordRef } = useLogin() - const { data } = useSession() - console.log('ini google', data) + const router = useRouter() + const [query, setQuery] = useState(router?.query?.next || '/') + const { data: session } = useSession() + const [googleLoading, setGoogleloading] = useState(true) + useEffect(() => { + // Simulate loading for 2 seconds + const delay = setTimeout(() => { + setGoogleloading(false); + }, 3000); + + return () => { + clearTimeout(delay); // Clear the timeout if the component unmounts + }; + }, []); + + + const handleGoogle = async () => { + await signIn('google', { callbackUrl: '/login' }) + } + + useEffect(() => { + if (session) { + router.push(query) + } + }, [session, query]) + + if (googleLoading) { + return ( +
+ +
+ ) + } return (
@@ -64,13 +99,26 @@ const LoginDesktop = () => { {!isLoading ? 'Masuk' : 'Loading...'} +
+
+

ATAU

+
+
+ + type='submit' + className='border border-gray-500 p-2 rounded-md hover:bg-gray-100 w-full mt-2 flex items-center justify-center gap-x-2' + onClick={() => handleGoogle()} + > + google image +

Masuk dengan Google

+
Belum punya akun Indoteknik?{' '} diff --git a/src/lib/auth/components/LoginMobile.jsx b/src/lib/auth/components/LoginMobile.jsx index b365330b..c5177625 100644 --- a/src/lib/auth/components/LoginMobile.jsx +++ b/src/lib/auth/components/LoginMobile.jsx @@ -5,10 +5,22 @@ import Alert from '@/core/components/elements/Alert/Alert' import MobileView from '@/core/components/views/MobileView' import useLogin from '../hooks/useLogin' +import { useSession, signIn, SignOut } from 'next-auth/react' +import { useRouter } from 'next/router' +import { useState } from 'react' + const LoginMobile = () => { const { handleSubmit, handleChangeInput, isLoading, isValid, alert, emailRef, passwordRef } = useLogin() + const router = useRouter() + const [query, setQuery] = useState(router?.query?.next || '/') + const { data: session } = useSession() + + if (session) { + router.push(query) + } + return (
@@ -56,6 +68,26 @@ const LoginMobile = () => { {!isLoading ? 'Masuk' : 'Loading...'} +
+
+

ATAU

+
+
+ +
Belum punya akun Indoteknik?{' '} -- cgit v1.2.3 From 9a33f3a391a402807cc5e7913b1a97e430a7aaa2 Mon Sep 17 00:00:00 2001 From: "HATEC\\SPVDEV001" Date: Tue, 15 Aug 2023 15:16:38 +0700 Subject: sign in --- src/lib/auth/components/LoginDesktop.jsx | 35 +++++++++----------------------- 1 file changed, 10 insertions(+), 25 deletions(-) (limited to 'src/lib/auth') diff --git a/src/lib/auth/components/LoginDesktop.jsx b/src/lib/auth/components/LoginDesktop.jsx index e3bff492..06c90d45 100644 --- a/src/lib/auth/components/LoginDesktop.jsx +++ b/src/lib/auth/components/LoginDesktop.jsx @@ -6,8 +6,10 @@ import Alert from '@/core/components/elements/Alert/Alert' import { useSession, signIn, SignOut } from 'next-auth/react' import Image from 'next/image' import { useRouter } from 'next/router' -import { useEffect, useState } from 'react' +import { useContext, useEffect, useState } from 'react' import Spinner from '@/core/components/elements/Spinner/Spinner' +import { AuthContext } from '@/pages/_app' +import { getAuth, setAuth } from '@/core/utils/auth' const LoginDesktop = () => { const { handleSubmit, handleChangeInput, isLoading, isValid, alert, emailRef, passwordRef } = @@ -16,37 +18,20 @@ const LoginDesktop = () => { const router = useRouter() const [query, setQuery] = useState(router?.query?.next || '/') const { data: session } = useSession() - const [googleLoading, setGoogleloading] = useState(true) - - useEffect(() => { - // Simulate loading for 2 seconds - const delay = setTimeout(() => { - setGoogleloading(false); - }, 3000); - - return () => { - clearTimeout(delay); // Clear the timeout if the component unmounts - }; - }, []); - + const auth = getAuth() + const { setAuthenticated } = useContext(AuthContext) const handleGoogle = async () => { - await signIn('google', { callbackUrl: '/login' }) + const url = query != '/' ? '/login?next=' + query : '/login' + await signIn('google', { callbackUrl: url }) } useEffect(() => { - if (session) { - router.push(query) + if (session || auth) { + setAuthenticated(session ? session.odooUser : auth) } - }, [session, query]) + }, [session]) - if (googleLoading) { - return ( -
- -
- ) - } return (
-- cgit v1.2.3 From f01f28a7eac76c6da5bf857bfc80fd347586ce7f Mon Sep 17 00:00:00 2001 From: "HATEC\\SPVDEV001" Date: Wed, 16 Aug 2023 09:39:47 +0700 Subject: register google --- src/lib/auth/components/LoginDesktop.jsx | 11 ++++---- src/lib/auth/components/LoginMobile.jsx | 17 ++++++++++--- src/lib/auth/components/RegisterDesktop.jsx | 39 +++++++++++++++++++++++++++++ src/lib/auth/components/RegisterMobile.jsx | 39 +++++++++++++++++++++++++++++ 4 files changed, 96 insertions(+), 10 deletions(-) (limited to 'src/lib/auth') diff --git a/src/lib/auth/components/LoginDesktop.jsx b/src/lib/auth/components/LoginDesktop.jsx index 06c90d45..3a7477b9 100644 --- a/src/lib/auth/components/LoginDesktop.jsx +++ b/src/lib/auth/components/LoginDesktop.jsx @@ -7,9 +7,8 @@ import { useSession, signIn, SignOut } from 'next-auth/react' import Image from 'next/image' import { useRouter } from 'next/router' import { useContext, useEffect, useState } from 'react' -import Spinner from '@/core/components/elements/Spinner/Spinner' -import { AuthContext } from '@/pages/_app' import { getAuth, setAuth } from '@/core/utils/auth' +import { setCookie } from 'cookies-next' const LoginDesktop = () => { const { handleSubmit, handleChangeInput, isLoading, isValid, alert, emailRef, passwordRef } = @@ -19,7 +18,6 @@ const LoginDesktop = () => { const [query, setQuery] = useState(router?.query?.next || '/') const { data: session } = useSession() const auth = getAuth() - const { setAuthenticated } = useContext(AuthContext) const handleGoogle = async () => { const url = query != '/' ? '/login?next=' + query : '/login' @@ -27,10 +25,11 @@ const LoginDesktop = () => { } useEffect(() => { - if (session || auth) { - setAuthenticated(session ? session.odooUser : auth) + if(session){ + setCookie('auth', JSON.stringify(session?.odooUser)) + router.push(query) } - }, [session]) + },[session]) return ( diff --git a/src/lib/auth/components/LoginMobile.jsx b/src/lib/auth/components/LoginMobile.jsx index c5177625..68ceb769 100644 --- a/src/lib/auth/components/LoginMobile.jsx +++ b/src/lib/auth/components/LoginMobile.jsx @@ -7,7 +7,8 @@ import useLogin from '../hooks/useLogin' import { useSession, signIn, SignOut } from 'next-auth/react' import { useRouter } from 'next/router' -import { useState } from 'react' +import { useEffect, useState } from 'react' +import { setCookie } from 'cookies-next' const LoginMobile = () => { const { handleSubmit, handleChangeInput, isLoading, isValid, alert, emailRef, passwordRef } = @@ -17,9 +18,17 @@ const LoginMobile = () => { const [query, setQuery] = useState(router?.query?.next || '/') const { data: session } = useSession() - if (session) { - router.push(query) + const handleGoogle = async () => { + const url = query != '/' ? '/login?next=' + query : '/login' + await signIn('google', { callbackUrl: url }) + setCookie('auth', JSON.stringify(session?.odooUser)) } + useEffect(() => { + if (session) { + setCookie('auth', JSON.stringify(session?.odooUser)) + router.push(query) + } + }, [session]) return ( @@ -77,7 +86,7 @@ const LoginMobile = () => {
+
+
+

ATAU

+
+
+ +
Sudah punya akun Indoteknik?{' '} diff --git a/src/lib/auth/components/RegisterMobile.jsx b/src/lib/auth/components/RegisterMobile.jsx index da6efaf5..c21c9325 100644 --- a/src/lib/auth/components/RegisterMobile.jsx +++ b/src/lib/auth/components/RegisterMobile.jsx @@ -7,6 +7,10 @@ import MobileView from '@/core/components/views/MobileView' import BottomPopup from '@/core/components/elements/Popup/BottomPopup' import PageContent from '@/lib/content/components/PageContent' import ReCAPTCHA from 'react-google-recaptcha' +import { signIn, useSession } from 'next-auth/react' +import { useRouter } from 'next/router' +import { setCookie } from 'cookies-next' +import { useEffect } from 'react' const RegisterMobile = () => { const { @@ -24,6 +28,20 @@ const RegisterMobile = () => { setTnd } = useRegister() + const { data: session } = useSession() + const router = useRouter() + + const handleGoogle = async () => { + await signIn('google', { callbackUrl: '/register' }) + } + + useEffect(() => { + if(session){ + setCookie('auth', JSON.stringify(session?.odooUser)) + router.push('/') + } + },[session]) + return (
@@ -122,6 +140,27 @@ const RegisterMobile = () => {
+
+
+

ATAU

+
+
+ + +
Sudah punya akun Indoteknik?{' '} -- cgit v1.2.3 From b6f6bf23f90ff0dfadf9bf0af8866c2cfc17aa9c Mon Sep 17 00:00:00 2001 From: "HATEC\\SPVDEV001" Date: Fri, 18 Aug 2023 11:02:39 +0700 Subject: handling redirect login --- src/lib/auth/components/LoginDesktop.jsx | 28 ++++++++++++++++++++-------- src/lib/auth/components/LoginMobile.jsx | 24 +++++++++++++++++++----- src/lib/auth/components/RegisterDesktop.jsx | 14 +++++++++++++- src/lib/auth/components/RegisterMobile.jsx | 13 ++++++++++++- src/lib/auth/hooks/useLogin.js | 19 ++++++++++++++++++- 5 files changed, 82 insertions(+), 16 deletions(-) (limited to 'src/lib/auth') 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 ( + +
Mohon Tunggu
+
+ +
+
+ ) + } return ( 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 ( + +
Mohon Tunggu
+
+ +
+
+ ) + } + return (
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 ( + +
Mohon Tunggu
+
+ +
+
+ ) + } + return (
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 ( + +
Mohon Tunggu
+
+ +
+
+ ) + } return (
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 } } -- cgit v1.2.3