Skip to content
Snippets Groups Projects
useAuth.ts 1.54 KiB
Newer Older
  • Learn to ignore specific revisions
  • Guilhem CARRON's avatar
    Guilhem CARRON committed
    import React, { useContext, useState } from 'react'
    
    import axios from 'axios'
    import { User } from '../models/user.model'
    
    Guilhem CARRON's avatar
    Guilhem CARRON committed
    import { UserContext } from './userContext'
    
    
    const _apiUrl: string = 'https://localhost:1443/'
    
    export interface Auth {
    
      loginUser: () => Promise<void>
    
      error: null
    
      isUserLogged: () => Promise<boolean>
      getUser: () => User | undefined
      logoutUser: () => void
    
    }
    export const useAuth = (): Auth => {
      const [error, setError] = useState(null)
    
    Guilhem CARRON's avatar
    Guilhem CARRON committed
      const { setisLogged } = useContext(UserContext)
    
      //login user
    
      const loginUser = async (): Promise<void> => {
    
        try {
          await axios.get(`${_apiUrl}OAuth2Login`)
          const { data } = await axios.get(`${_apiUrl}api/common/WhoAmI`)
          if (data) {
    
            console.log('whomi', data)
            localStorage.setItem('user', JSON.stringify(data))
    
          }
        } catch (e) {
          setError(e)
        }
      }
    
    
      const logoutUser = (): void => {
        localStorage.removeItem('user')
      }
    
      const isUserLogged = async (): Promise<boolean> => {
        const user = localStorage.getItem('user')
        if (user) {
          try {
            const { data } = await axios.get(`${_apiUrl}api/common/WhoAmI`)
            if (data) {
              console.log(data)
              return true
            }
            return false
          } catch (e) {
            setError(e)
            return false
          }
        } else {
          return false
        }
      }
      const getUser = (): User | undefined => {
        const user = localStorage.getItem('user')
        if (user) return JSON.parse(user) as User
      }
    
      return { loginUser, error, isUserLogged, getUser, logoutUser }