- Added isomorphic-dompurify for improved XSS protection - Refactored token storage to use in-memory management for access tokens - Implemented server-side route handlers for OAuth token management - Introduced security headers in next.config.js - Removed client-side exposure of client_secret and sensitive tokens - Updated API interceptors to handle token refresh logic - Cleaned up cookie management for refresh tokens
42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
import UserAccountPage from "@/components/panel/userAccount";
|
|
import { cookies } from "next/headers";
|
|
import { fetchReq } from "@/lib/req";
|
|
import { safeJsonParse } from "@/lib/sanitize";
|
|
import { adaptBankAccount } from "@/lib/representationAdapters";
|
|
import { getServerAccessToken } from "@/lib/serverToken";
|
|
|
|
export const dynamic = "force-dynamic";
|
|
|
|
async function UserAccount() {
|
|
const API_URL = process.env.NEXT_PUBLIC_API_URL;
|
|
let representation = null;
|
|
|
|
try {
|
|
const cookieStore = await cookies();
|
|
const userInfo = cookieStore.get("userInfo");
|
|
|
|
if (userInfo) {
|
|
const parsedUserInfo = safeJsonParse(userInfo.value);
|
|
const representationUuid = parsedUserInfo?.representation_uuid;
|
|
|
|
if (representationUuid) {
|
|
const accessToken = await getServerAccessToken();
|
|
if (accessToken) {
|
|
representation = await fetchReq(
|
|
`${API_URL}/api/v1/representation/${representationUuid}`,
|
|
{ headers: { Authorization: `Bearer ${accessToken}` } }
|
|
);
|
|
}
|
|
}
|
|
}
|
|
} catch (error) {
|
|
console.error("Error fetching representation account:", error);
|
|
}
|
|
|
|
const bank = adaptBankAccount(representation?.data?.bank_account);
|
|
|
|
return <UserAccountPage data={{ bank }} />;
|
|
}
|
|
|
|
export default UserAccount;
|