aboutsummaryrefslogtreecommitdiffstats
path: root/lib/useUser.js
blob: 16833aaf1f8564198ed06343b5da64123726ba99 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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}
}