updated adapters to automatically verify auth

This commit is contained in:
dswbx
2025-01-25 09:09:09 +01:00
parent f64e5dac03
commit b0c5f6307a
11 changed files with 60 additions and 57 deletions

View File

@@ -4,8 +4,7 @@ import "bknd/dist/styles.css";
import { getApi } from "bknd/adapter/astro";
const api = getApi(Astro, { mode: "dynamic" });
await api.verifyAuth();
const api = await getApi(Astro, { mode: "dynamic" });
const user = api.getUser();
export const prerender = false;

View File

@@ -2,7 +2,8 @@
import { getApi } from "bknd/adapter/astro";
import Card from "../components/Card.astro";
import Layout from "../layouts/Layout.astro";
const api = getApi(Astro);
const api = await getApi(Astro);
const { data } = await api.data.readMany("todos");
---

View File

@@ -2,8 +2,7 @@
import { getApi } from "bknd/adapter/astro";
import Card from "../components/Card.astro";
import Layout from "../layouts/Layout.astro";
const api = getApi(Astro, { mode: "dynamic" });
await api.verifyAuth();
const api = await getApi(Astro, { mode: "dynamic" });
const { data } = await api.data.readMany("todos");
const user = api.getUser();

View File

@@ -1,12 +1,7 @@
import type { LoaderFunctionArgs } from "@remix-run/node";
import { Links, Meta, Outlet, Scripts, ScrollRestoration, useLoaderData } from "@remix-run/react";
import { Api, ClientProvider } from "bknd/client";
declare module "@remix-run/server-runtime" {
export interface AppLoadContext {
api: Api;
}
}
import { withApi } from "bknd/adapter/remix";
import { type Api, ClientProvider } from "bknd/client";
export function Layout({ children }: { children: React.ReactNode }) {
return (
@@ -26,20 +21,17 @@ export function Layout({ children }: { children: React.ReactNode }) {
);
}
export const loader = async (args: LoaderFunctionArgs) => {
const api = new Api({
host: new URL(args.request.url).origin,
headers: args.request.headers
});
declare module "@remix-run/server-runtime" {
export interface AppLoadContext {
api: Api;
}
}
// add api to the context
args.context.api = api;
await api.verifyAuth();
export const loader = withApi(async (args: LoaderFunctionArgs, api: Api) => {
return {
user: api.getAuthState()?.user
user: api.getUser()
};
};
});
export default function App() {
const data = useLoaderData<typeof loader>();

View File

@@ -1,19 +1,20 @@
import { type MetaFunction, useLoaderData } from "@remix-run/react";
import type { LoaderFunctionArgs } from "@remix-run/server-runtime";
import { useAuth } from "bknd/client";
export const meta: MetaFunction = () => {
return [{ title: "Remix & bknd" }, { name: "description", content: "Welcome to Remix & bknd!" }];
};
export const loader = async (args: LoaderFunctionArgs) => {
const api = args.context.api;
await api.verifyAuth();
export const loader = async ({ context: { api } }: LoaderFunctionArgs) => {
const { data } = await api.data.readMany("todos");
return { data, user: api.getUser() };
};
export default function Index() {
const { data, user } = useLoaderData<typeof loader>();
const auth = useAuth();
console.log("auth", auth);
return (
<div>