21 lines
1.3 KiB
TypeScript
21 lines
1.3 KiB
TypeScript
import type { ChangePasswordPayload, CurrentUser, LoginPayload, RegisterPayload, SessionUser, UpdateProfilePayload } from '../types/auth'
|
|
import { apiRequest, ApiError, clearSessionToken } from './session'
|
|
|
|
export { ApiError as AuthApiUnavailableError }
|
|
export const register = (payload: RegisterPayload) => apiRequest<CurrentUser>('/api/auth/register', { method: 'POST', body: JSON.stringify(payload) })
|
|
export const login = async (payload: LoginPayload) => {
|
|
clearSessionToken()
|
|
return apiRequest<SessionUser>('/api/auth/login', { method: 'POST', body: JSON.stringify(payload) })
|
|
}
|
|
export const getCurrentUser = () => apiRequest<SessionUser>('/api/auth/me')
|
|
export const updateMyProfile = (payload: UpdateProfilePayload) => apiRequest<CurrentUser>('/api/users/me', { method: 'PATCH', body: JSON.stringify(payload) }, true)
|
|
export const logout = async () => {
|
|
await apiRequest<void>('/api/auth/logout', { method: 'POST' }, true)
|
|
clearSessionToken()
|
|
}
|
|
export const changePassword = async (payload: ChangePasswordPayload) => {
|
|
await apiRequest<void>('/api/auth/change-password', { method: 'POST', body: JSON.stringify(payload) }, true)
|
|
clearSessionToken()
|
|
}
|
|
export const getUsers = (limit = 100, offset = 0) => apiRequest<CurrentUser[]>(`/api/admin/users?limit=${limit}&offset=${offset}`)
|