Files
border-red-post-nalati/frontend/src/services/auth.ts
T

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}`)