-
Notifications
You must be signed in to change notification settings - Fork 118
/
Copy pathmodule.ts
64 lines (59 loc) · 2.24 KB
/
module.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import { defineNuxtModule, addPlugin, createResolver, addImportsDir, addServerHandler } from '@nuxt/kit'
import { sha256 } from 'ohash'
import { defu } from 'defu'
// Module options TypeScript interface definition
export interface ModuleOptions {}
export default defineNuxtModule<ModuleOptions>({
meta: {
name: 'auth-core',
configKey: 'auth'
},
// Default configuration options of the Nuxt module
defaults: {},
setup (options, nuxt) {
const resolver = createResolver(import.meta.url)
if (!process.env.NUXT_SESSION_PASSWORD) {
console.warn('No session password set, using a random password, please set NUXT_SESSION_PASSWORD in your .env file with at least 32 chars')
const randomPassword = sha256(`${Date.now()}${Math.random()}`).slice(0, 32)
console.log(`NUXT_SESSION_PASSWORD=${randomPassword}`)
process.env.NUXT_SESSION_PASSWORD = randomPassword
}
// App
addImportsDir(resolver.resolve('./runtime/composables'))
addPlugin(resolver.resolve('./runtime/plugins/session.server'))
// Server
nuxt.options.nitro.imports = nuxt.options.nitro.imports || {}
nuxt.options.nitro.imports.dirs = nuxt.options.nitro.imports.dirs || []
nuxt.options.nitro.imports.dirs.push(resolver.resolve('./runtime/server/utils'))
// Waiting for https://github.com/nuxt/nuxt/pull/24000/files
// addServerImportsDir(resolver.resolve('./runtime/server/utils'))
addServerHandler({
handler: resolver.resolve('./runtime/server/api/session.delete'),
route: '/api/_auth/session',
method: 'delete'
})
addServerHandler({
handler: resolver.resolve('./runtime/server/api/session.get'),
route: '/api/_auth/session',
method: 'get'
})
// Runtime Config
const runtimeConfig = nuxt.options.runtimeConfig
runtimeConfig.session = defu(runtimeConfig.session, {
name: 'nuxt-session',
password: ''
})
// OAuth settings
runtimeConfig.oauth = defu(runtimeConfig.oauth, {})
// GitHub Oauth
runtimeConfig.oauth.github = defu(runtimeConfig.oauth.github, {
clientId: '',
clientSecret: ''
})
// Spotify Oauth
runtimeConfig.oauth.spotify = defu(runtimeConfig.oauth.spotify, {
clientId: '',
clientSecret: ''
})
}
})