diff --git a/packages/function/src/auth/index.ts b/packages/function/src/auth/index.ts index 9069aaa8..0a3d2f05 100644 --- a/packages/function/src/auth/index.ts +++ b/packages/function/src/auth/index.ts @@ -1,7 +1,6 @@ import { z } from "zod/v4"; +import { RedisClient } from "bun"; import { subjects } from "../subjects.js"; - -import {redis} from 'bun'; import { issuer } from "@openauthjs/openauth"; import { RedisStorage } from "./src/storage.js"; import { Team } from "@nestri/core/team/index"; @@ -9,11 +8,12 @@ import { CodeProvider } from "@openauthjs/openauth/provider/code"; //!TODO: Add an auth storage adapter, maybe redis or postgres const storage = RedisStorage({ - redis: RedisClient.create(), + client: new RedisClient(process.env.REDIS_URL), }); const app = issuer({ subjects, + storage, providers: { email: CodeProvider({ async request(_req, state, form, error) { diff --git a/packages/function/src/auth/src/storage.ts b/packages/function/src/auth/src/storage.ts index 588b9892..19308e38 100644 --- a/packages/function/src/auth/src/storage.ts +++ b/packages/function/src/auth/src/storage.ts @@ -19,11 +19,8 @@ * * @packageDocumentation */ -import { - joinKey, - StorageAdapter, -} from "@openauthjs/openauth/storage/storage"; -import { Cluster, Redis } from "@nestri/core/redis/client"; +import { redis as RedisClient } from "bun"; +import { joinKey, StorageAdapter } from "@openauthjs/openauth/storage/storage"; const separator = String.fromCharCode(0x1f); @@ -31,16 +28,16 @@ const separator = String.fromCharCode(0x1f); * Configure the Redis connection that's created. */ export interface RedisStorageOptions { - redis: Cluster | Redis; keyPrefix?: string; defaultTTL?: number; + client: typeof RedisClient; } /** * Creates a Cloudflare KV store. * @param options - The config for the adapter. */ export function RedisStorage(options: RedisStorageOptions): StorageAdapter { - const { redis } = options; + const { client } = options; const prefix = "storage"; function createKey(key: string[]): string { @@ -54,7 +51,7 @@ export function RedisStorage(options: RedisStorageOptions): StorageAdapter { return { async get(key: string[]) { const redisKey = createKey(key); - const value = await redis.get(redisKey); + const value = await client.get(redisKey); if (!value) return; @@ -70,21 +67,16 @@ export function RedisStorage(options: RedisStorageOptions): StorageAdapter { if (ttlSeconds) { // SET key value EX ttlSeconds - await options.redis.set( - redisKey, - JSON.stringify(value), - "EX", - ttlSeconds, - ); + await client.set(redisKey, JSON.stringify(value), "EX", ttlSeconds); } else { // No expiry → simple SET - await options.redis.set(redisKey, JSON.stringify(value)); + await client.set(redisKey, JSON.stringify(value)); } }, async remove(key: string[]) { const redisKey = createKey(key); - await options.redis.del(redisKey); + await client.del(redisKey); }, async *scan(prefix: string[]) { @@ -95,7 +87,7 @@ export function RedisStorage(options: RedisStorageOptions): StorageAdapter { do { // SCAN cursor MATCH pattern COUNT 100 - const [nextCursor, keys] = await redis.scan( + const [nextCursor, keys] = await client.scan( cursor, "MATCH", scanPattern, @@ -107,7 +99,7 @@ export function RedisStorage(options: RedisStorageOptions): StorageAdapter { if (keys.length === 0) { continue; } - const values = await redis.mget(...keys); + const values = await client.mget(...keys); for (let i = 0; i < keys.length; i++) { const key = keys[i]; if (!key) {