This commit is contained in:
Elijah Lucian
2021-03-16 20:15:33 -06:00
parent 90b00b4736
commit 8a9604966c
35 changed files with 29279 additions and 0 deletions

41
frontend/src/api/index.ts Normal file
View File

@@ -0,0 +1,41 @@
import { message } from 'antd'
import axios from 'axios'
import { User } from '../types'
import { mockUser } from '../data'
import { JWT, getJWT, setHeaders, setJWT, wipeJWT } from '../utils/jwt'
const dev = process.env.NODE_ENV === 'development'
export const logIn = async (username: string, password: string) => {
if (dev) return mockUser
try {
const { data: jwt } = await axios.post<JWT>(`/api/login`, {
username,
password,
})
setJWT(jwt)
const user = await getLoggedInUser()
return user
} catch (err) {
console.log(err)
message.error('Error logging in!')
}
}
export const logOut = () => {
wipeJWT()
// axios -> delete session?
}
export const getLoggedInUser = async () => {
if (dev) return mockUser
const jwt = getJWT()
if (!jwt) throw new Error('User not logged in') // TODO: decorator
const { data } = await axios.get<User>(`/users/${jwt.id}`, setHeaders())
return data
}