aboutsummaryrefslogtreecommitdiffstats
path: root/hooks/useUser.js
diff options
context:
space:
mode:
Diffstat (limited to 'hooks/useUser.js')
-rw-r--r--hooks/useUser.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/hooks/useUser.js b/hooks/useUser.js
new file mode 100644
index 0000000..16833aa
--- /dev/null
+++ b/hooks/useUser.js
@@ -0,0 +1,33 @@
+import { useEffect } from 'react'
+import Router from 'next/router'
+import useSWR from 'swr'
+
+export default function useUser({
+ redirectToLogin = false,
+ redirectToVerify = false,
+ redirectToApps = false,
+} = {}) {
+ const { data: user, mutate: mutateUser } = useSWR('/api/user')
+
+ useEffect(() => {
+ if (!user || (!redirectToLogin && !redirectToVerify && !redirectToApps)) return
+
+ if (redirectToLogin && !user?.isLoggedIn) {
+ Router.push('/login')
+ }
+
+ if (redirectToVerify && user?.isLoggedIn && !user?.isVerified) {
+ Router.push('/verify')
+ }
+
+ if (
+ (redirectToApps && user?.isLoggedIn && user?.isVerified)
+ ) {
+ Router.push('/')
+ }
+
+ return
+ }, [user, redirectToLogin, redirectToVerify, redirectToApps])
+
+ return {user, mutateUser}
+}