调整配置读取方式

This commit is contained in:
zhl 2023-05-08 21:48:42 +08:00
parent 1ed899bfac
commit 4f74504b14
3 changed files with 40 additions and 31 deletions

View File

@ -38,7 +38,7 @@ export class ApiServer {
}) })
this.server.register(apiAuthPlugin, { this.server.register(apiAuthPlugin, {
secret: config.api.token_secret, secret: { private: config.api.token_secret_private, public: config.api.token_secret_public },
expiresIn: config.api.token_expiresIn, expiresIn: config.api.token_expiresIn,
}) })
if (process.env.NODE_ENV !== 'production') { if (process.env.NODE_ENV !== 'production') {

View File

@ -1,29 +1,47 @@
import * as dotenv from "dotenv"; import * as dotenv from 'dotenv'
const NODE_ENV = process.env.NODE_ENV || "development"; import assert from 'assert'
const NODE_ENV = process.env.NODE_ENV || 'development'
dotenv.config(); dotenv.config()
let path; let path
switch (process.env.NODE_ENV) { switch (process.env.NODE_ENV) {
case "test": case 'test':
path = `${__dirname}/../../.env.development`; path = `${__dirname}/../../.env.development`
break; break
case "production": case 'production':
path = `${__dirname}/../../.env.production`; path = `${__dirname}/../../.env.production`
break; break
default: default:
path = `${__dirname}/../../.env.development`; path = `${__dirname}/../../.env.development`
} }
dotenv.config({ path: path, debug: NODE_ENV === "development" }); dotenv.config({ path: path, debug: NODE_ENV === 'development' })
assert(process.env.API_TOKEN_SECRET_PRIVATE, 'API_TOKEN_SECRET_PRIVATE not set')
assert(process.env.API_TOKEN_SECRET_PUBLIC, 'API_TOKEN_SECRET_PUBLIC not set')
assert(process.env.API_TOKEN_EXPIRESIN, 'API_TOKEN_EXPIRESIN not set')
const privateKey = `
-----BEGIN PRIVATE KEY-----
${process.env.API_TOKEN_SECRET_PRIVATE}
-----END PRIVATE KEY-----
`
const publicKey = `
-----BEGIN PUBLIC KEY-----
${process.env.API_TOKEN_SECRET_PUBLIC}
-----END PUBLIC KEY-----
`
let baseConfig = { let baseConfig = {
api: { api: {
port: parseInt(process.env.API_PORT), port: parseInt(process.env.API_PORT),
host: process.env.API_HOST, host: process.env.API_HOST,
token_secret: process.env.API_TOKEN_SECRET, token_secret_private: privateKey,
token_secret_public: publicKey,
token_expiresIn: process.env.API_TOKEN_EXPIRESIN, token_expiresIn: process.env.API_TOKEN_EXPIRESIN,
}, },
db_main: process.env.DB_MAIN, db_main: process.env.DB_MAIN,
db_second: process.env.DB_SECOND, db_second: process.env.DB_SECOND,
}; }
export default baseConfig; export default baseConfig

View File

@ -14,25 +14,16 @@ declare module 'fastify' {
} }
export interface ApiAuthOptions { export interface ApiAuthOptions {
secret: string secret: {
private: string
public: string
}
expiresIn: string expiresIn: string
} }
const privateKey = `
-----BEGIN PRIVATE KEY-----
${process.env.API_TOKEN_SECRET_PRIVATE}
-----END PRIVATE KEY-----
`
const publicKey = `
-----BEGIN PUBLIC KEY-----
${process.env.API_TOKEN_SECRET_PUBLIC}
-----END PUBLIC KEY-----
`
const apiAuthPlugin: FastifyPluginAsync<ApiAuthOptions> = async function (fastify, opts) { const apiAuthPlugin: FastifyPluginAsync<ApiAuthOptions> = async function (fastify, opts) {
fastify.register(require('@fastify/jwt'), { fastify.register(require('@fastify/jwt'), {
secret: { secret: opts.secret,
private: privateKey,
public: publicKey,
},
sign: { expiresIn: opts.expiresIn, algorithm: 'EdDSA' }, sign: { expiresIn: opts.expiresIn, algorithm: 'EdDSA' },
}) })
// 只有路由配置的role为anon才不需要过滤 // 只有路由配置的role为anon才不需要过滤