Skip to content

Commit 8d2afb5

Browse files
committed
feat move credentials & env resolving to utils
1 parent cce3ef3 commit 8d2afb5

1 file changed

Lines changed: 107 additions & 0 deletions

File tree

src/utils.ts

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
import * as execa from 'execa'
2+
import type { ModuleOptions } from './module'
3+
4+
export async function getEdgeDbCredentials(
5+
cwd: string,
6+
processInject: boolean = true,
7+
) {
8+
// http://localhost:10702/db/edgedb/ext/auth/
9+
let dbCredentials: any | undefined
10+
try {
11+
dbCredentials = await execa.execaCommand(`edgedb instance credentials --json`, { cwd })
12+
}
13+
catch (e) {
14+
// Silently fail, the EdgeDB instance credentials command failed.
15+
}
16+
if (dbCredentials) {
17+
const { host, port, database, user, password, tls_ca, tls_security } = JSON.parse(dbCredentials.stdout)
18+
19+
if (processInject) {
20+
if (!process.env.NUXT_EDGEDB_HOST)
21+
process.env.NUXT_EDGEDB_HOST = host
22+
if (!process.env.NUXT_EDGEDB_PORT)
23+
process.env.NUXT_EDGEDB_PORT = port
24+
if (!process.env.NUXT_EDGEDB_DATABASE)
25+
process.env.NUXT_EDGEDB_DATABASE = database
26+
if (!process.env.NUXT_EDGEDB_USER)
27+
process.env.NUXT_EDGEDB_USER = user
28+
if (!process.env.NUXT_EDGEDB_PASS)
29+
process.env.NUXT_EDGEDB_PASS = password
30+
if (!process.env.NUXT_EDGEDB_TLS_CA)
31+
process.env.NUXT_EDGEDB_TLS_CA = tls_ca
32+
if (!process.env.NUXT_EDGEDB_TLS_SECURITY)
33+
process.env.NUXT_EDGEDB_TLS_SECURITY = tls_security
34+
if (!process.env.NUXT_EDGEDB_AUTH_BASE_URL)
35+
process.env.NUXT_EDGEDB_AUTH_BASE_URL = `http://${host}:${port}/db/${database}/ext/auth/`
36+
}
37+
38+
return { host, port, database, user, password, tls_ca, tls_security }
39+
}
40+
}
41+
42+
export async function getEdgeDbConfiguration(
43+
appUrl: string,
44+
options: Partial<ModuleOptions> = {},
45+
cwd: string = process.cwd(),
46+
processInject: boolean = true,
47+
) {
48+
await getEdgeDbCredentials(cwd, processInject)
49+
50+
const {
51+
// EdgeDB DSN settings
52+
NUXT_EDGEDB_HOST: host,
53+
NUXT_EDGEDB_PORT: port,
54+
NUXT_EDGEDB_USER: user,
55+
NUXT_EDGEDB_PASS: pass,
56+
NUXT_EDGEDB_DATABASE: database,
57+
NUXT_EDGEDB_TLS_CA: tlsCA,
58+
NUXT_EDGEDB_TLS_SECURITY: tlsSecurity,
59+
60+
// EdgeDB Auth settings
61+
NUXT_EDGEDB_IDENTITY_MODEL: identityModel = options?.identityModel || 'User',
62+
63+
// EdgeDB Auth URls
64+
NUXT_EDGEDB_AUTH_BASE_URL: authBaseUrl = `http://${host}:${port}/db/${database}/ext/auth/`,
65+
NUXT_EDGEDB_OAUTH_CALLBACK: oAuthCallbackUrl = `http://${host}:${port}/db/${database}/ext/auth/callback`,
66+
67+
// EdgeDB Nuxt Auth URLs
68+
NUXT_EDGEDB_AUTH_VERIFY_REDIRECT_URL: verifyRedirectUrl = `${appUrl}/auth/verify`,
69+
NUXT_EDGEDB_AUTH_RESET_PASSWORD_URL: resetPasswordUrl = `${appUrl}/auth/reset-password`,
70+
NUXT_EDGEDB_OAUTH_REDIRECT_URL: oAuthRedirectUrl = `${appUrl}/auth/callback`,
71+
} = process.env
72+
73+
const dsn = {
74+
host,
75+
port,
76+
user,
77+
pass,
78+
database,
79+
tlsCA,
80+
tlsSecurity: tlsSecurity as 'insecure' | 'no_host_verification' | 'strict' | 'default' | undefined,
81+
full: `edgedb://${user}:${pass}@${host}:${port}/${database}`,
82+
}
83+
84+
const urls = {
85+
// EdgeDB Nuxt Auth URLs
86+
appUrl,
87+
resetPasswordUrl,
88+
verifyRedirectUrl,
89+
oAuthRedirectUrl,
90+
91+
// EdgeDB Auth URls
92+
authBaseUrl,
93+
oAuthCallbackUrl,
94+
}
95+
96+
const auth = {
97+
enabled: options?.auth || false,
98+
oauth: options?.oauth || false,
99+
identityModel,
100+
}
101+
102+
return {
103+
auth,
104+
dsn,
105+
urls,
106+
}
107+
}

0 commit comments

Comments
 (0)