Skip to content

Commit e77eba9

Browse files
authored
feat(auth): support Ionic (#97)
* feat: support Ionic * chore(playground): add Ionic app * test: add Ionic app tests
1 parent e545dc8 commit e77eba9

22 files changed

+13186
-8
lines changed

package.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,16 @@
3333
"dev:build:spa:session": "cross-env NUXT_SSR=false NUXT_PUBLIC_DIRECTUS_AUTH_MODE=session NODE_OPTIONS=--no-deprecation nuxi build playground",
3434
"dev:build:ssr:cookie": "cross-env NUXT_SSR=true NUXT_PUBLIC_DIRECTUS_AUTH_MODE=cookie NODE_OPTIONS=--no-deprecation nuxi build playground",
3535
"dev:build:spa:cookie": "cross-env NUXT_SSR=false NUXT_PUBLIC_DIRECTUS_AUTH_MODE=cookie NODE_OPTIONS=--no-deprecation nuxi build playground",
36+
"dev:build:ionic:cookie": "cross-env NUXT_PUBLIC_DIRECTUS_AUTH_MODE=cookie NODE_OPTIONS=--no-deprecation nuxi build playground_ionic",
37+
"dev:build:ionic:session": "cross-env NUXT_PUBLIC_DIRECTUS_AUTH_MODE=session NODE_OPTIONS=--no-deprecation nuxi build playground_ionic",
3638
"test": "playwright test --ui",
3739
"test:prod:ssr:session": "npm run dev:build:ssr:session && cross-env NODE_ENV=production NUXT_PUBLIC_DIRECTUS_AUTH_MODE=session playwright test",
3840
"test:prod:spa:session": "npm run dev:build:spa:session && cross-env NODE_ENV=production NUXT_PUBLIC_DIRECTUS_AUTH_MODE=session playwright test",
3941
"test:prod:ssr:cookie": "npm run dev:build:ssr:cookie && cross-env NODE_ENV=production NUXT_PUBLIC_DIRECTUS_AUTH_MODE=cookie playwright test",
4042
"test:prod:spa:cookie": "npm run dev:build:spa:cookie && cross-env NODE_ENV=production NUXT_PUBLIC_DIRECTUS_AUTH_MODE=cookie playwright test",
41-
"test:prod": "npm run test:prod:ssr:session && npm run test:prod:ssr:cookie && npm run test:prod:spa:session && npm run test:prod:spa:cookie",
43+
"test:prod:ionic:cookie": "npm run dev:build:ionic:cookie && cross-env NODE_ENV=production NUXT_PUBLIC_DIRECTUS_AUTH_MODE=cookie IS_IONIC=true playwright test",
44+
"test:prod:ionic:session": "npm run dev:build:ionic:session && cross-env NODE_ENV=production NUXT_PUBLIC_DIRECTUS_AUTH_MODE=session IS_IONIC=true playwright test",
45+
"test:prod": "npm run test:prod:ssr:session && npm run test:prod:ssr:cookie && npm run test:prod:spa:session && npm run test:prod:spa:cookie && npm run test:prod:ionic:cookie && npm run test:prod:ionic:session",
4246
"lint": "eslint .",
4347
"typecheck": "nuxi typecheck",
4448
"prepack": "nuxt-module-build",
@@ -71,4 +75,4 @@
7175
"@vue/apollo-composable": "^4.0.1"
7276
},
7377
"packageManager": "[email protected]"
74-
}
78+
}

playground_ionic/.env

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
NODE_OPTIONS=--dns-result-order=ipv4first
2+
NUXT_PUBLIC_DIRECTUS_AUTH_MODE=session

playground_ionic/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
!.env

playground_ionic/.npmrc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
auto-install-peers=true
2+
shamefully-hoist=true
3+
strict-peer-dependencies=false

playground_ionic/app.vue

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<template>
2+
<ion-app>
3+
<ion-router-outlet />
4+
<div data-testid="hydration-check" />
5+
</ion-app>
6+
</template>

playground_ionic/ionic.config.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"name": "my-module-playground",
3+
"integrations": {},
4+
"type": "vue"
5+
}

playground_ionic/nuxt.config.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import { defineNuxtConfig } from 'nuxt/config'
2+
3+
export default defineNuxtConfig({
4+
modules: ['../src/module', '@nuxtjs/ionic'],
5+
ssr: false,
6+
7+
future: {
8+
compatibilityVersion: 4,
9+
},
10+
11+
compatibilityDate: '2024-12-29',
12+
13+
vite: {
14+
logLevel: 'silent',
15+
},
16+
17+
typescript: {
18+
tsConfig: {
19+
compilerOptions: {
20+
module: 'ESNext',
21+
},
22+
},
23+
},
24+
25+
directus: {
26+
auth: {
27+
enabled: true,
28+
mode: process.env.NUXT_PUBLIC_DIRECTUS_AUTH_MODE as 'session' | 'cookie',
29+
enableGlobalAuthMiddleware: true,
30+
refreshTokenCookieName: 'directus_refresh_token',
31+
sessionTokenCookieName: 'directus_session_token',
32+
loggedInFlagName: 'directus_logged_in',
33+
msRefreshBeforeExpires: 5000,
34+
redirect: {
35+
login: '/auth/login',
36+
callback: '/auth/callback',
37+
resetPassword: '/auth/reset-password',
38+
home: '/home',
39+
logout: '/auth/login',
40+
},
41+
},
42+
graphql: {
43+
enabled: true,
44+
httpEndpoint: 'http://localhost:8055/graphql',
45+
wsEndpoint: 'ws://localhost:8055/graphql',
46+
},
47+
},
48+
})

0 commit comments

Comments
 (0)