Skip to content

Commit

Permalink
refactor: use lazy initialiser for kindeClient
Browse files Browse the repository at this point in the history
  • Loading branch information
danielroe committed Oct 24, 2023
1 parent ff30e05 commit c107256
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 24 deletions.
4 changes: 2 additions & 2 deletions src/runtime/server/api/callback.get.ts
@@ -1,10 +1,10 @@
import { defineEventHandler, getRequestURL, sendRedirect } from 'h3'
import { kindeClient } from '../utils/client'
import { getKindeClient } from '../utils/client'

const config = useRuntimeConfig()

export default defineEventHandler(async event => {
await kindeClient.handleRedirectToApp(
await getKindeClient().handleRedirectToApp(
event.context.kinde!.sessionManager,
getRequestURL(event)
)
Expand Down
4 changes: 2 additions & 2 deletions src/runtime/server/api/login.get.ts
@@ -1,8 +1,8 @@
import { defineEventHandler, sendRedirect } from 'h3'
import { kindeClient } from '../utils/client'
import { getKindeClient } from '../utils/client'

export default defineEventHandler(async event => {
const loginURL = await kindeClient.login(event.context.kinde.sessionManager, {
const loginURL = await getKindeClient().login(event.context.kinde.sessionManager, {
// TODO: support custom options
})
await sendRedirect(event, loginURL.href)
Expand Down
4 changes: 2 additions & 2 deletions src/runtime/server/api/logout.get.ts
@@ -1,8 +1,8 @@
import { defineEventHandler, sendRedirect } from 'h3'
import { kindeClient } from '../utils/client'
import { getKindeClient } from '../utils/client'

export default defineEventHandler(async event => {
const logoutURL = await kindeClient.logout(
const logoutURL = await getKindeClient().logout(
event.context.kinde!.sessionManager
)
await sendRedirect(event, logoutURL.href)
Expand Down
4 changes: 2 additions & 2 deletions src/runtime/server/api/register.get.ts
@@ -1,8 +1,8 @@
import { defineEventHandler, sendRedirect } from 'h3'
import { kindeClient } from '../utils/client'
import { getKindeClient } from '../utils/client'

export default defineEventHandler(async event => {
const registerURL = await kindeClient.register(
const registerURL = await getKindeClient().register(
event.context.kinde.sessionManager,
{
// TODO: support custom org type, etc.
Expand Down
3 changes: 2 additions & 1 deletion src/runtime/server/middleware/kinde.ts
@@ -1,12 +1,13 @@
import type { H3Event } from 'h3'
import type { ACClient, SessionManager } from '@kinde-oss/kinde-typescript-sdk'
import { defineEventHandler } from 'h3'
import { kindeClient } from '../utils/client'
import { getKindeClient } from '../utils/client'
import { getSession, updateSession, clearSession } from '#imports'

export default defineEventHandler(async event => {
const sessionManager = await createSessionManager(event)
event.context.kinde = { sessionManager }
const kindeClient = getKindeClient()
for (const key in kindeClient) {
event.context.kinde[key] = kindeClient[key].bind(
kindeClient,
Expand Down
32 changes: 17 additions & 15 deletions src/runtime/server/utils/client.ts
Expand Up @@ -2,22 +2,24 @@ import {
createKindeServerClient,
GrantType,
} from '@kinde-oss/kinde-typescript-sdk'
import type { ACClientOptions } from '@kinde-oss/kinde-typescript-sdk'
import type { ACClient } from '@kinde-oss/kinde-typescript-sdk'
import { useRuntimeConfig } from '#imports'

const config = useRuntimeConfig()
let kindeClient: ACClient

const clientOptions: ACClientOptions = {
authDomain: config.kinde.authDomain,
clientId: config.kinde.clientId,
clientSecret: config.kinde.clientSecret,
logoutRedirectURL: config.kinde.logoutRedirectURL,
redirectURL: config.kinde.redirectURL,
framework: 'Nuxt',
frameworkVersion: '0.1.0',
}
export const getKindeClient = () => {
if (kindeClient) return kindeClient

const config = useRuntimeConfig()
kindeClient = createKindeServerClient(GrantType.AUTHORIZATION_CODE, {
authDomain: config.kinde.authDomain,
clientId: config.kinde.clientId,
clientSecret: config.kinde.clientSecret,
logoutRedirectURL: config.kinde.logoutRedirectURL,
redirectURL: config.kinde.redirectURL,
framework: 'Nuxt',
frameworkVersion: '0.1.0',
})

export const kindeClient = createKindeServerClient(
GrantType.AUTHORIZATION_CODE,
clientOptions
)
return kindeClient
}

0 comments on commit c107256

Please sign in to comment.