Major changes: - Restructure plugin architecture: moved federation logic into a dedicated `federation` plugin with Better Auth integration, defining schemas for server registry, key rotation, and blacklist management - Extract encryption layer: new `oven` plugin handles end-to-end encryption (E2EE) with OLM client/server implementations - Reorganize social features: consolidated social endpoints (posts, follows, blocks, mutes) and removed legacy plugin patterns in favor of unified plugin structure - Decentralized key management: refactored `keytools` and `keygen` to support federation key rotation with challenge tokens and health checks Infrastructure updates: - Upgrade dependencies: bump Better Auth to 1.6.9, React to 19.2.5, Next.js to 16.2.3, Tailwind to 4.2.4 - Add cryptographic libraries: @scure/bip39, @signalapp/libsignal-client, @matrix-org/matrix-sdk-crypto-wasm for enhanced federation security - Add utilities: base58-js, uuid for federation identifier handling - Update database schema with new federation tables (serverRegistry, rotateChallengeTokens, blacklistedServers) Minor updates: test suite alignment, storage client cleanup, PostFederationSchema refinements Co-authored-by: Cursor <cursoragent@cursor.com>
31 lines
1 KiB
TypeScript
31 lines
1 KiB
TypeScript
"use server";
|
|
|
|
import CreateIdentity from "@/components/main/CreateIdentity";
|
|
import { auth } from "@/lib/auth";
|
|
import { headers } from "next/headers";
|
|
import { redirect } from "next/navigation";
|
|
import { PostTestForm } from "./PostTestForm";
|
|
|
|
export default async function Home() {
|
|
const reqHeaders = await headers();
|
|
|
|
const session = await auth.api.getSession({ headers: reqHeaders });
|
|
if (!session) redirect(`/auth`);
|
|
|
|
// Server components can't talk to the browser-side `authClient`, so we hit
|
|
// the plugin endpoint via `auth.api`. This only tells us whether the
|
|
// identity is registered remotely; the local Dexie half is verified inside
|
|
// `CreateIdentity` (client component) when needed.
|
|
const result = await auth.api.checkIdentity({ headers: reqHeaders });
|
|
const hasIdentity = "exists" in result && result.exists;
|
|
if (!hasIdentity) {
|
|
console.debug(`[Home] user ${session.user.id} has no identity, showing create identity modal`);
|
|
return <CreateIdentity />;
|
|
}
|
|
|
|
return (
|
|
<>
|
|
<PostTestForm />
|
|
</>
|
|
);
|
|
}
|