diff --git a/.changeset/puny-sloths-joke.md b/.changeset/puny-sloths-joke.md new file mode 100644 index 0000000..48fd640 --- /dev/null +++ b/.changeset/puny-sloths-joke.md @@ -0,0 +1,6 @@ +--- +'@tern-secure/backend': patch +'@tern-secure/nextjs': patch +--- + +feat: import retriever user from backend diff --git a/apps/test/app/layout.tsx b/apps/test/app/layout.tsx index e95b25f..ce096a7 100644 --- a/apps/test/app/layout.tsx +++ b/apps/test/app/layout.tsx @@ -33,14 +33,14 @@ export default async function RootLayout({ }} //requiresVerification={false} persistence='browserCookie' ternUIUrl='http://localhost:4000/ternsecure.browser.js' diff --git a/apps/test/app/protected/page.tsx b/apps/test/app/protected/page.tsx index d057fab..13117d8 100644 --- a/apps/test/app/protected/page.tsx +++ b/apps/test/app/protected/page.tsx @@ -5,7 +5,7 @@ export const dynamic = 'force-dynamic'; export default async function ProtectedPage() { const { user, require, redirectToSignIn } = await auth(); - if (!require({ role: 'admin' })) return
Access Denied
; + if (!require({ role: 'admin' })) return
Access Denied now
; if (!user) return redirectToSignIn(); diff --git a/apps/test/app/protected/protectedClient.tsx b/apps/test/app/protected/protectedClient.tsx index 7db8de7..f1513c6 100644 --- a/apps/test/app/protected/protectedClient.tsx +++ b/apps/test/app/protected/protectedClient.tsx @@ -1,9 +1,12 @@ "use client"; import { useRouter } from "next/navigation"; +import type { TernSecureUser } from "@tern-secure/nextjs"; + +export type SerializableTernSecureUser = Omit; interface ProtectedPageClientProps { - user: any; + user: SerializableTernSecureUser; } export function ProtectedPageClient({ diff --git a/apps/test/app/user/page.tsx b/apps/test/app/user/page.tsx deleted file mode 100644 index 40ad9e6..0000000 --- a/apps/test/app/user/page.tsx +++ /dev/null @@ -1,23 +0,0 @@ -'use server'; - -import { createBackendInstanceClient } from '@tern-secure/backend'; -import { headers, cookies } from 'next/headers'; - -const backendOptions = { - apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY || '', - apiUrl: process.env.TERNSECURE_API_URL || '', - apiVersion: process.env.TERNSECURE_API_VERSION || 'v1', -}; - -export default async function UserPage() { - const headersList = await headers(); - const cookiesList = await cookies(); - const idToken = cookiesList.get('__dev_FIREBASE_[DEFAULT]')?.value; - const userData = await createBackendInstanceClient(backendOptions).userData.getUserData( - backendOptions.apiKey, - { idToken }, - { referer: headersList.get('referer') || undefined }, - ); - - return userData.data; -} diff --git a/packages/backend/src/admin/index.ts b/packages/backend/src/admin/index.ts index 88f9274..2798817 100644 --- a/packages/backend/src/admin/index.ts +++ b/packages/backend/src/admin/index.ts @@ -1,17 +1,17 @@ -export { - createSessionCookie, +export { + createSessionCookie, createCustomTokenClaims, clearSessionCookie } from './sessionTernSecure' -export { - adminTernSecureAuth, - adminTernSecureDb, +export { + adminTernSecureAuth, + adminTernSecureDb, appCheckAdmin, - TernSecureTenantManager + TernSecureTenantManager } from '../utils/admin-init' export { initializeAdminConfig } from '../utils/config' export { createTenant, createTenantUser } from './tenant' -export { +export { CreateNextSessionCookie, GetNextServerSessionCookie, GetNextIdToken, @@ -24,4 +24,5 @@ export { export type { SignInAuthObject, RequestState } from '../instance/backendInstance' export { createBackendInstance, authenticateRequest, signedIn } from '../instance/backendInstance' -export { RetrieveUser } from './user' \ No newline at end of file +export { RetrieveUser } from './user' +export type { UserRecord } from './user' \ No newline at end of file diff --git a/packages/backend/src/admin/user.ts b/packages/backend/src/admin/user.ts index 31cfa73..9412d59 100644 --- a/packages/backend/src/admin/user.ts +++ b/packages/backend/src/admin/user.ts @@ -46,4 +46,7 @@ export function RetrieveUser(tenantId?: string) { getUserByEmail, getUserByPhoneNumber, } -} \ No newline at end of file +} + + +export type { UserRecord } \ No newline at end of file diff --git a/packages/nextjs/src/app-router/admin/index.ts b/packages/nextjs/src/app-router/admin/index.ts index b98d716..5753665 100644 --- a/packages/nextjs/src/app-router/admin/index.ts +++ b/packages/nextjs/src/app-router/admin/index.ts @@ -6,7 +6,8 @@ export { createSessionCookieServer, createNextSessionCookie, setNextServerSession, - setNextServerToken + setNextServerToken, + RetrieveUser } from './actions' export { EndpointRouter } from './endpointRouter'