feat: add better authentication features and organization management

- Introduced new database migration for enhanced user and organization management.
- Updated package dependencies to include new Better Auth modules for API keys, Expo, and i18n.
- Implemented SMS functionality for phone verification and password resets.
- Enhanced authentication plugins with username and phone number support.
- Added performance configuration options for session cookie caching and API key updates.
- Updated email templates to include organization invitation messages.
- Improved testing coverage for new features and configurations.
This commit is contained in:
2026-06-10 19:39:15 -07:00
parent e28267fa4e
commit e3057928a2
21 changed files with 2200 additions and 36 deletions

63
pnpm-lock.yaml generated
View File

@@ -8,6 +8,15 @@ importers:
.:
dependencies:
'@better-auth/api-key':
specifier: ^1.6.16
version: 1.6.16(@better-auth/core@1.6.16(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.2.2)(@cloudflare/workers-types@4.20260610.1)(better-call@1.3.6(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)(better-auth@1.6.16(@cloudflare/workers-types@4.20260610.1)(vitest@3.2.6(@types/node@24.13.1)(jiti@2.7.0)))(better-call@1.3.6(zod@4.4.3))
'@better-auth/expo':
specifier: ^1.6.16
version: 1.6.16(@better-auth/core@1.6.16(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.2.2)(@cloudflare/workers-types@4.20260610.1)(better-call@1.3.6(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(better-auth@1.6.16(@cloudflare/workers-types@4.20260610.1)(vitest@3.2.6(@types/node@24.13.1)(jiti@2.7.0)))
'@better-auth/i18n':
specifier: ^1.6.16
version: 1.6.16(@better-auth/core@1.6.16(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.2.2)(@cloudflare/workers-types@4.20260610.1)(better-call@1.3.6(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(better-auth@1.6.16(@cloudflare/workers-types@4.20260610.1)(vitest@3.2.6(@types/node@24.13.1)(jiti@2.7.0)))
'@better-auth/passkey':
specifier: ^1.6.16
version: 1.6.16(@better-auth/core@1.6.16(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.2.2)(@cloudflare/workers-types@4.20260610.1)(better-call@1.3.6(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.2.2)(better-auth@1.6.16(@cloudflare/workers-types@4.20260610.1)(vitest@3.2.6(@types/node@24.13.1)(jiti@2.7.0)))(better-call@1.3.6(zod@4.4.3))(nanostores@1.3.0)
@@ -198,6 +207,14 @@ packages:
resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==}
engines: {node: '>=6.9.0'}
'@better-auth/api-key@1.6.16':
resolution: {integrity: sha512-3iEn1tcVsT9inPTrjinyciA8TT1cpls/uDd/7cQCN6hN4xy6l4VO11pnoMcetstdq6jOayWgyrDT6cPCl/hafA==}
peerDependencies:
'@better-auth/core': ^1.6.16
'@better-auth/utils': 0.4.1
better-auth: ^1.6.16
better-call: 1.3.6
'@better-auth/core@1.6.16':
resolution: {integrity: sha512-a0+ZNaaYYxOdFXFXmOE36TgtYN8QDzSYDozaAH0zsiWB0oyljsENyCxHJSekysISftb0rFpVXNdw525aEAOa6w==}
peerDependencies:
@@ -225,6 +242,31 @@ packages:
drizzle-orm:
optional: true
'@better-auth/expo@1.6.16':
resolution: {integrity: sha512-uXnbu6d5EbBVMtmRTjyI5RAsJHcJYCtnfNar8C2RpcJecL4Fws3fhNSI8tkJHDEdNAZ2Hn70DNy2x4eb/t8irA==}
peerDependencies:
'@better-auth/core': ^1.6.16
better-auth: ^1.6.16
expo-constants: '>=17.0.0'
expo-linking: '>=7.0.0'
expo-network: '>=8.0.7'
expo-web-browser: '>=14.0.0'
peerDependenciesMeta:
expo-constants:
optional: true
expo-linking:
optional: true
expo-network:
optional: true
expo-web-browser:
optional: true
'@better-auth/i18n@1.6.16':
resolution: {integrity: sha512-Mb4QtU7pd2NQyzaMpOcJzuMQ/o1E9BCJOlIeLfyDFZrHrnKrIPathqRLvRFCvJcgWUB7R1saf+Unjv8Sn5ikXQ==}
peerDependencies:
'@better-auth/core': ^1.6.16
better-auth: ^1.6.16
'@better-auth/kysely-adapter@1.6.16':
resolution: {integrity: sha512-ys/feL1p6By3/rQlMZ8QTgf9K2tZAIp1p+fGqT2krIoG5r+UsH3gMkUdbHlYxLt790Bo+Njkiqt59P0BMNsi+g==}
peerDependencies:
@@ -1971,6 +2013,14 @@ snapshots:
'@babel/helper-string-parser': 7.29.7
'@babel/helper-validator-identifier': 7.29.7
'@better-auth/api-key@1.6.16(@better-auth/core@1.6.16(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.2.2)(@cloudflare/workers-types@4.20260610.1)(better-call@1.3.6(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)(better-auth@1.6.16(@cloudflare/workers-types@4.20260610.1)(vitest@3.2.6(@types/node@24.13.1)(jiti@2.7.0)))(better-call@1.3.6(zod@4.4.3))':
dependencies:
'@better-auth/core': 1.6.16(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.2.2)(@cloudflare/workers-types@4.20260610.1)(better-call@1.3.6(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
'@better-auth/utils': 0.4.1
better-auth: 1.6.16(@cloudflare/workers-types@4.20260610.1)(vitest@3.2.6(@types/node@24.13.1)(jiti@2.7.0))
better-call: 1.3.6(zod@4.4.3)
zod: 4.4.3
'@better-auth/core@1.6.16(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.2.2)(@cloudflare/workers-types@4.20260610.1)(better-call@1.3.6(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)':
dependencies:
'@better-auth/utils': 0.4.1
@@ -1990,6 +2040,19 @@ snapshots:
'@better-auth/core': 1.6.16(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.2.2)(@cloudflare/workers-types@4.20260610.1)(better-call@1.3.6(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
'@better-auth/utils': 0.4.1
'@better-auth/expo@1.6.16(@better-auth/core@1.6.16(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.2.2)(@cloudflare/workers-types@4.20260610.1)(better-call@1.3.6(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(better-auth@1.6.16(@cloudflare/workers-types@4.20260610.1)(vitest@3.2.6(@types/node@24.13.1)(jiti@2.7.0)))':
dependencies:
'@better-auth/core': 1.6.16(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.2.2)(@cloudflare/workers-types@4.20260610.1)(better-call@1.3.6(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
'@better-fetch/fetch': 1.2.2
better-auth: 1.6.16(@cloudflare/workers-types@4.20260610.1)(vitest@3.2.6(@types/node@24.13.1)(jiti@2.7.0))
better-call: 1.3.6(zod@4.4.3)
zod: 4.4.3
'@better-auth/i18n@1.6.16(@better-auth/core@1.6.16(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.2.2)(@cloudflare/workers-types@4.20260610.1)(better-call@1.3.6(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(better-auth@1.6.16(@cloudflare/workers-types@4.20260610.1)(vitest@3.2.6(@types/node@24.13.1)(jiti@2.7.0)))':
dependencies:
'@better-auth/core': 1.6.16(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.2.2)(@cloudflare/workers-types@4.20260610.1)(better-call@1.3.6(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
better-auth: 1.6.16(@cloudflare/workers-types@4.20260610.1)(vitest@3.2.6(@types/node@24.13.1)(jiti@2.7.0))
'@better-auth/kysely-adapter@1.6.16(@better-auth/core@1.6.16(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.2.2)(@cloudflare/workers-types@4.20260610.1)(better-call@1.3.6(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)(kysely@0.29.2)':
dependencies:
'@better-auth/core': 1.6.16(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.2.2)(@cloudflare/workers-types@4.20260610.1)(better-call@1.3.6(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)