mirror of
https://github.com/snowykami/neo-blog.git
synced 2025-09-03 15:56:22 +00:00
- 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.
60 lines
1.6 KiB
TypeScript
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;
|
|
} |