50 lines
1.5 KiB
TypeScript
50 lines
1.5 KiB
TypeScript
import { api } from './api';
|
|
import { normalizeMobileNumber, normalizeVerificationCode } from '../lib/utils';
|
|
|
|
export const authService = {
|
|
sendOtp: async (mobileNumber: string) => {
|
|
const normalizedMobile = normalizeMobileNumber(mobileNumber);
|
|
const response = await api.post('/api/v1/accounts/send-otp-sms', {
|
|
mobile: {
|
|
number: normalizedMobile,
|
|
countryCode: '98'
|
|
}
|
|
});
|
|
return response.data;
|
|
},
|
|
|
|
login: async (mobileNumber: string, code: string) => {
|
|
const normalizedMobile = normalizeMobileNumber(mobileNumber);
|
|
const normalizedCode = normalizeVerificationCode(code);
|
|
const response = await api.post('/api/v1/accounts/register-and-login-by-mobile', {
|
|
mobile: {
|
|
number: normalizedMobile,
|
|
countryCode: '98'
|
|
},
|
|
verificationCode: normalizedCode
|
|
});
|
|
|
|
if (response.data.isSuccess) {
|
|
const { accessToken, refreshToken } = response.data.value;
|
|
localStorage.setItem('accessToken', accessToken);
|
|
localStorage.setItem('refreshToken', refreshToken);
|
|
}
|
|
|
|
return response.data;
|
|
},
|
|
|
|
logout: async () => {
|
|
const refreshToken = localStorage.getItem('refreshToken');
|
|
if (refreshToken) {
|
|
await api.post('/api/v1/accounts/logout', { refreshToken });
|
|
}
|
|
localStorage.removeItem('accessToken');
|
|
localStorage.removeItem('refreshToken');
|
|
},
|
|
|
|
getMe: async () => {
|
|
const response = await api.get('/api/v1/users/me');
|
|
return response.data;
|
|
}
|
|
};
|