Files
TeleEms-Dashboard/src/api/auth.ts

60 lines
2.0 KiB
TypeScript

import { apiClient } from './apiClient';
import type { AuthUser, LoginResponse, MfaSetupResponse, MfaVerifyResponse } from './types';
export const authApi = {
login: async (username: string, password: string): Promise<LoginResponse> => {
return apiClient.post('/v1/auth/login', { username, password });
},
verifyMfa: async (mfaSessionToken: string, totpCode: string): Promise<LoginResponse> => {
return apiClient.post('/v1/auth/mfa/verify', {
mfa_session_token: mfaSessionToken,
totp_code: totpCode
});
},
setupMfa: async (token: string): Promise<MfaSetupResponse> => {
return apiClient.post('/v1/auth/mfa/totp/setup', {}, { token });
},
verifyTotpSetup: async (token: string, totpCode: string): Promise<MfaVerifyResponse> => {
return apiClient.post('/v1/auth/mfa/totp/verify', { totp_code: totpCode }, { token });
},
getProfile: async (token: string): Promise<AuthUser> => {
return apiClient.get('/v1/auth/me', { token });
},
getAuditLogs: async (token: string, limit = 20, offset = 0) => {
return apiClient.get(`/v1/auth/audit-logs?limit=${limit}&offset=${offset}`, { token });
},
registerUser: async (userData: any, token: string) => {
return apiClient.post('/v1/auth/users', userData, { token });
},
getUsers: async (token: string) => {
return apiClient.get('/v1/auth/users', { token });
},
updateUser: async (userId: string, userData: any, token: string) => {
return apiClient.put(`/v1/auth/users/${userId}`, userData, { token });
},
disableMfa: async (password: string, token: string) => {
return apiClient.post('/v1/auth/mfa/disable', { password }, { token });
},
getDepartments: async (token: string) => {
return apiClient.get('/v1/hospital/departments', { token });
},
createDepartment: async (deptData: any, token: string) => {
return apiClient.post('/v1/hospital/departments', deptData, { token });
},
getRoles: async (token: string) => {
return apiClient.get('/v1/auth/roles', { token });
}
};