sipher/src/app/page.tsx
Nixyan 66ebebd105 refactor: modularize plugins with federation and encryption infrastructure
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>
2026-05-05 11:40:14 -03:00

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 />
</>
);
}