Skip to content
Snippets Groups Projects
useAuth.ts 1.11 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { useContext, useState } from 'react'
    
    import axios from 'axios'
    
    import { UserContext } from './userContext'
    import { useHistory } from 'react-router-dom'
    
    
    export interface Auth {
    
      loginUser: () => Promise<void>
    
      error: null
    
      logoutUser: () => void
    
    }
    export const useAuth = (): Auth => {
      const [error, setError] = useState(null)
    
      const { setUser } = useContext(UserContext)
      const history = useHistory()
    
      //login user
    
      const loginUser = async (): Promise<void> => {
    
          window.location.href="/OAuth2Login"
    
        } catch (e) {
          setError(e)
        }
      }
    
      const logoutUser = async (): Promise<void> => {
        try {
          if (setUser) setUser(null)
    
          window.location.href="/Logout"
    
      //set user in context and push them home
      const setUserContext = async (): Promise<void> => {
        try {
    
          const { data } = await axios.get(`/api/common/WhoAmI`)
    
          if (data && setUser) {
            setUser(data)
            history.push('/editing')
    
      return { loginUser, error, logoutUser }