Files
neo-blog/web/src/api/user.ts
Snowykami e659de23fb ️ feat: refactor sorting parameters in post listing API and components
- Renamed `orderedBy` to `orderBy` and `reverse` to `desc` in ListPostsParams interface and related functions.
- Updated all usages of the sorting parameters in the post listing logic to reflect the new naming convention.

feat: add user-related API functions

- Implemented `getLoginUser` and `getUserById` functions in the user API to fetch user details.
- Enhanced user model to include `language` property.

feat: integrate next-intl for internationalization

- Added `next-intl` plugin to Next.js configuration for improved localization support.
- Removed previous i18n implementation and replaced it with a new structure using JSON files for translations.
- Created locale files for English, Japanese, and Chinese with basic translations.
- Implemented a request configuration to handle user locales and messages dynamically.

fix: clean up unused imports and code

- Removed unused i18n utility functions and language settings from device context.
- Cleaned up commented-out code in blog card component and sidebar.

chore: update dependencies

- Added `deepmerge` for merging locale messages.
- Updated package.json and pnpm-lock.yaml to reflect new dependencies.
2025-07-26 09:48:23 +08:00

60 lines
1.6 KiB
TypeScript

import axiosClient from "./client";
import type { OidcConfig } from "@/models/oidc-config";
import type { User } from "@/models/user";
import type { BaseResponse } from "@/models/resp";
export interface LoginRequest {
username: string;
password: string;
rememberMe?: boolean; // 可以轻松添加新字段
captcha?: string;
}
export interface RegisterRequest {
username: string;
password: string;
nickname: string;
email: string;
verificationCode?: string;
}
export async function userLogin(
data: LoginRequest
): Promise<BaseResponse<{ token: string; user: User }>> {
const res = await axiosClient.post<BaseResponse<{ token: string; user: User }>>(
"/user/login",
data
);
return res.data;
}
export async function userRegister(
data: RegisterRequest
): Promise<BaseResponse<{ token: string; user: User }>> {
const res = await axiosClient.post<BaseResponse<{ token: string; user: User }>>(
"/user/register",
data
);
return res.data;
}
export async function ListOidcConfigs(): Promise<BaseResponse<OidcConfig[]>> {
const res = await axiosClient.get<BaseResponse<OidcConfig[]>>(
"/user/oidc/list"
);
return res.data;
}
export async function getLoginUser(token: string = ""): Promise<BaseResponse<User>> {
const res = await axiosClient.get<BaseResponse<User>>("/user/me", {
headers: {
Authorization: `Bearer ${token}`
}
});
return res.data;
}
export async function getUserById(id: number): Promise<BaseResponse<User>> {
const res = await axiosClient.get<BaseResponse<User>>(`/user/u/${id}`);
return res.data;
}