feat(account): add forum login and sidebar account entry

This commit is contained in:
2026-05-18 22:34:14 +08:00
parent c24c88458c
commit 63dac217c2
12 changed files with 621 additions and 23 deletions
+8 -2
View File
@@ -131,8 +131,14 @@ const toSyncedAppList = (
});
export const setBackendToken = (token: string | null): void => {
if (token) backend.defaults.headers.common.Authorization = `Bearer ${token}`;
else delete backend.defaults.headers.common.Authorization;
const backendWithOptionalDefaults = backend as typeof backend & {
defaults?: { headers?: { common?: Record<string, unknown> } };
};
const commonHeaders = backendWithOptionalDefaults.defaults?.headers?.common;
if (!commonHeaders) return;
if (token) commonHeaders.Authorization = `Bearer ${token}`;
else delete commonHeaders.Authorization;
};
export const exchangeFlarumToken = async (payload: {
+28
View File
@@ -0,0 +1,28 @@
import axios from "axios";
import { FLARUM_BASE_URL } from "@/global/storeConfig";
import type { FlarumLoginPayload } from "@/global/typedefinition";
type FlarumTokenResponse = {
token: string;
userId: string;
};
const asRecord = (value: unknown): Record<string, unknown> => {
if (value && typeof value === "object" && !Array.isArray(value)) {
return value as Record<string, unknown>;
}
return {};
};
export const requestFlarumToken = async (
payload: FlarumLoginPayload,
): Promise<FlarumTokenResponse> => {
const response = await axios.post(`${FLARUM_BASE_URL}/api/token`, payload);
const data = asRecord(response.data);
return {
token: String(data.token || ""),
userId: String(data.userId || data.user_id || ""),
};
};