@halvest/cybervest-testnet
Version:
Incentive Cybervest Testnet Coming Soon
49 lines (40 loc) • 1.38 kB
text/typescript
"use server";
import { VerifyLoginPayloadParams, createAuth } from "thirdweb/auth";
import { privateKeyAccount } from "thirdweb/wallets";
import { client } from "../../../lib/client";
import { cookies } from "next/headers";
import { redirect } from "next/navigation";
const privateKey = process.env.THIRDWEB_ADMIN_PRIVATE_KEY || "";
if (!privateKey) {
throw new Error("Missing THIRDWEB_ADMIN_PRIVATE_KEY in .env file.");
}
const thirdwebAuth = createAuth({
domain: process.env.NEXT_PUBLIC_THIRDWEB_AUTH_DOMAIN || "",
adminAccount: privateKeyAccount({ client, privateKey }),
});
export const generatePayload = thirdwebAuth.generatePayload;
export async function login(payload: VerifyLoginPayloadParams) {
const verifiedPayload = await thirdwebAuth.verifyPayload(payload);
if (verifiedPayload.valid) {
const jwt = await thirdwebAuth.generateJWT({
payload: verifiedPayload.payload,
});
cookies().set("jwt", jwt);
// redirect to the secure page
return redirect("/jwt-cookie/secure");
}
}
export async function authedOnly() {
const jwt = cookies().get("jwt");
if (!jwt?.value) {
redirect("/jwt-cookie");
}
const authResult = await thirdwebAuth.verifyJWT({ jwt: jwt.value });
if (!authResult.valid) {
redirect("/jwt-cookie");
}
return authResult.parsedJWT;
}
export async function logout() {
cookies().delete("jwt");
}