Files
rn-app/src/services/authService.ts

124 lines
2.5 KiB
TypeScript
Raw Normal View History

2025-11-04 13:27:19 +08:00
/**
*
* API
*/
2025-11-05 17:24:55 +08:00
import { request } from '@/src/utils/network/api';
2025-11-04 13:27:19 +08:00
import type {
LoginFormData,
RegisterFormData,
ForgotPasswordFormData,
ResetPasswordFormData,
ChangePasswordFormData,
PhoneLoginFormData,
} from '@/src/schemas/auth';
import type { User } from '@/src/schemas/user';
/**
* API
*/
interface ApiResponse<T = any> {
code: number;
message: string;
data: T;
}
/**
*
*/
interface LoginResponse {
user: User;
token: string;
refreshToken?: string;
}
/**
*
*/
class AuthService {
/**
*
*/
async login(data: LoginFormData): Promise<LoginResponse> {
2025-11-05 17:24:55 +08:00
const response = await request.post<ApiResponse<LoginResponse>>('/auth/login', data);
2025-11-04 13:27:19 +08:00
return response.data;
}
/**
*
*/
async phoneLogin(data: PhoneLoginFormData): Promise<LoginResponse> {
2025-11-05 17:24:55 +08:00
const response = await request.post<ApiResponse<LoginResponse>>('/auth/phone-login', data);
2025-11-04 13:27:19 +08:00
return response.data;
}
/**
*
*/
async register(data: RegisterFormData): Promise<LoginResponse> {
2025-11-05 17:24:55 +08:00
const response = await request.post<ApiResponse<LoginResponse>>('/auth/register', data);
2025-11-04 13:27:19 +08:00
return response.data;
}
/**
*
*/
async logout(): Promise<void> {
await request.post('/auth/logout');
}
/**
*
*/
async forgotPassword(data: ForgotPasswordFormData): Promise<void> {
await request.post('/auth/forgot-password', data);
}
/**
*
*/
async resetPassword(data: ResetPasswordFormData): Promise<void> {
await request.post('/auth/reset-password', data);
}
/**
*
*/
async changePassword(data: ChangePasswordFormData): Promise<void> {
await request.post('/auth/change-password', data);
}
/**
*
*/
async sendVerificationCode(phone: string): Promise<void> {
await request.post('/auth/send-code', { phone });
}
/**
* token
*/
async refreshToken(refreshToken: string): Promise<{ token: string }> {
2025-11-05 17:24:55 +08:00
const response = await request.post<ApiResponse<{ token: string }>>('/auth/refresh-token', {
refreshToken,
});
2025-11-04 13:27:19 +08:00
return response.data;
}
/**
* token
*/
async verifyToken(): Promise<boolean> {
try {
await request.get('/auth/verify-token');
return true;
} catch {
return false;
}
}
}
// 导出单例
export const authService = new AuthService();
export default authService;