mirror of
https://github.com/IT4Change/gradido.git
synced 2026-02-06 01:46:07 +00:00
174 lines
6.7 KiB
TypeScript
174 lines
6.7 KiB
TypeScript
// ATTENTION: DO NOT PUT ANY SECRETS IN HERE (or the .env)
|
|
/* eslint-disable n/no-process-env */
|
|
|
|
// eslint-disable-next-line import/no-unresolved
|
|
import { validate } from '@config/index'
|
|
import { latestDbVersion } from '@dbTools/config/detectLastDBVersion'
|
|
import { Decimal } from 'decimal.js-light'
|
|
import dotenv from 'dotenv'
|
|
|
|
import { schema } from './schema'
|
|
|
|
dotenv.config()
|
|
|
|
Decimal.set({
|
|
precision: 25,
|
|
rounding: Decimal.ROUND_HALF_UP,
|
|
})
|
|
|
|
const constants = {
|
|
// DB_VERSION: '0087-add_index_on_user_roles',
|
|
DB_VERSION: latestDbVersion,
|
|
DECAY_START_TIME: new Date('2021-05-13 17:46:31-0000'), // GMT+0
|
|
LOG4JS_CONFIG: 'log4js-config.json',
|
|
}
|
|
|
|
const server = {
|
|
PORT: process.env.PORT ?? 4000,
|
|
JWT_SECRET: process.env.JWT_SECRET ?? 'secret123',
|
|
JWT_EXPIRES_IN: process.env.JWT_EXPIRES_IN ?? '10m',
|
|
GRAPHIQL: process.env.GRAPHIQL === 'true' || false,
|
|
GDT_ACTIVE: process.env.GDT_ACTIVE === 'true' || false,
|
|
GDT_API_URL: process.env.GDT_API_URL ?? 'https://gdt.gradido.net',
|
|
PRODUCTION: process.env.NODE_ENV === 'production' || false,
|
|
// default log level on production should be info
|
|
LOG_LEVEL: process.env.LOG_LEVEL ?? 'info',
|
|
}
|
|
|
|
const database = {
|
|
DB_HOST: process.env.DB_HOST ?? 'localhost',
|
|
DB_PORT: process.env.DB_PORT ? parseInt(process.env.DB_PORT) : 3306,
|
|
DB_USER: process.env.DB_USER ?? 'root',
|
|
DB_PASSWORD: process.env.DB_PASSWORD ?? '',
|
|
DB_DATABASE: process.env.DB_DATABASE ?? 'gradido_community',
|
|
TYPEORM_LOGGING_RELATIVE_PATH: process.env.TYPEORM_LOGGING_RELATIVE_PATH ?? 'typeorm.backend.log',
|
|
}
|
|
|
|
const klicktipp = {
|
|
KLICKTIPP: process.env.KLICKTIPP === 'true' || false,
|
|
KLICKTTIPP_API_URL: process.env.KLICKTIPP_API_URL ?? 'https://api.klicktipp.com',
|
|
KLICKTIPP_USER: process.env.KLICKTIPP_USER ?? 'gradido_test',
|
|
KLICKTIPP_PASSWORD: process.env.KLICKTIPP_PASSWORD ?? 'secret321',
|
|
KLICKTIPP_APIKEY_DE: process.env.KLICKTIPP_APIKEY_DE ?? 'SomeFakeKeyDE',
|
|
KLICKTIPP_APIKEY_EN: process.env.KLICKTIPP_APIKEY_EN ?? 'SomeFakeKeyEN',
|
|
}
|
|
|
|
const COMMUNITY_HOST = process.env.COMMUNITY_HOST ?? 'localhost'
|
|
const URL_PROTOCOL = process.env.URL_PROTOCOL ?? 'http'
|
|
const COMMUNITY_URL = process.env.COMMUNITY_URL ?? `${URL_PROTOCOL}://${COMMUNITY_HOST}`
|
|
const DLT_CONNECTOR_PORT = process.env.DLT_CONNECTOR_PORT ?? 6010
|
|
|
|
const dltConnector = {
|
|
DLT_CONNECTOR: process.env.DLT_CONNECTOR === 'true' || false,
|
|
DLT_CONNECTOR_URL: process.env.DLT_CONNECTOR_URL ?? `${COMMUNITY_URL}:${DLT_CONNECTOR_PORT}`,
|
|
}
|
|
|
|
const community = {
|
|
COMMUNITY_NAME: process.env.COMMUNITY_NAME ?? 'Gradido Entwicklung',
|
|
COMMUNITY_URL,
|
|
COMMUNITY_REDEEM_URL: COMMUNITY_URL + (process.env.COMMUNITY_REDEEM_PATH ?? '/redeem/'),
|
|
COMMUNITY_REDEEM_CONTRIBUTION_URL:
|
|
COMMUNITY_URL + (process.env.COMMUNITY_REDEEM_CONTRIBUTION_PATH ?? '/redeem/CL-'),
|
|
COMMUNITY_DESCRIPTION:
|
|
process.env.COMMUNITY_DESCRIPTION ?? 'Die lokale Entwicklungsumgebung von Gradido.',
|
|
COMMUNITY_SUPPORT_MAIL: process.env.COMMUNITY_SUPPORT_MAIL ?? 'support@supportmail.com',
|
|
}
|
|
|
|
const loginServer = {
|
|
LOGIN_APP_SECRET: process.env.LOGIN_APP_SECRET ?? '21ffbbc616fe',
|
|
LOGIN_SERVER_KEY: process.env.LOGIN_SERVER_KEY ?? 'a51ef8ac7ef1abf162fb7a65261acd7a',
|
|
USE_CRYPTO_WORKER: process.env.USE_CRYPTO_WORKER ?? false,
|
|
}
|
|
|
|
const email = {
|
|
EMAIL: process.env.EMAIL === 'true' || false,
|
|
EMAIL_TEST_MODUS: process.env.EMAIL_TEST_MODUS === 'true' || false,
|
|
EMAIL_TEST_RECEIVER: process.env.EMAIL_TEST_RECEIVER ?? 'stage1@gradido.net',
|
|
EMAIL_USERNAME: process.env.EMAIL_USERNAME ?? '',
|
|
EMAIL_SENDER: process.env.EMAIL_SENDER ?? 'info@gradido.net',
|
|
EMAIL_PASSWORD: process.env.EMAIL_PASSWORD ?? '',
|
|
EMAIL_SMTP_HOST: process.env.EMAIL_SMTP_HOST ?? 'mailserver',
|
|
EMAIL_SMTP_PORT: Number(process.env.EMAIL_SMTP_PORT) || 1025,
|
|
// eslint-disable-next-line no-unneeded-ternary
|
|
EMAIL_TLS: process.env.EMAIL_TLS === 'false' ? false : true,
|
|
EMAIL_LINK_VERIFICATION:
|
|
COMMUNITY_URL + (process.env.EMAIL_LINK_VERIFICATION_PATH ?? '/checkEmail/'),
|
|
EMAIL_LINK_SETPASSWORD:
|
|
COMMUNITY_URL + (process.env.EMAIL_LINK_SETPASSWORD_PATH ?? '/reset-password/'),
|
|
EMAIL_LINK_FORGOTPASSWORD:
|
|
COMMUNITY_URL + (process.env.EMAIL_LINK_FORGOTPASSWORD_PATH ?? '/forgot-password'),
|
|
EMAIL_LINK_OVERVIEW: COMMUNITY_URL + (process.env.EMAIL_LINK_OVERVIEW_PATH ?? '/overview'),
|
|
// time in minutes a optin code is valid
|
|
EMAIL_CODE_VALID_TIME: process.env.EMAIL_CODE_VALID_TIME
|
|
? parseInt(process.env.EMAIL_CODE_VALID_TIME) ?? 1440
|
|
: 1440,
|
|
// time in minutes that must pass to request a new optin code
|
|
EMAIL_CODE_REQUEST_TIME: process.env.EMAIL_CODE_REQUEST_TIME
|
|
? parseInt(process.env.EMAIL_CODE_REQUEST_TIME) ?? 10
|
|
: 10,
|
|
}
|
|
|
|
const webhook = {
|
|
// Elopage
|
|
WEBHOOK_ELOPAGE_SECRET: process.env.WEBHOOK_ELOPAGE_SECRET ?? 'secret',
|
|
}
|
|
|
|
// This is needed by graphql-directive-auth
|
|
process.env.APP_SECRET = server.JWT_SECRET
|
|
|
|
const federation = {
|
|
FEDERATION_BACKEND_SEND_ON_API: process.env.FEDERATION_BACKEND_SEND_ON_API ?? '1_0',
|
|
// ?? operator don't work here as expected
|
|
FEDERATION_VALIDATE_COMMUNITY_TIMER: Number(
|
|
process.env.FEDERATION_VALIDATE_COMMUNITY_TIMER ?? 60000,
|
|
),
|
|
FEDERATION_XCOM_SENDCOINS_ENABLED:
|
|
process.env.FEDERATION_XCOM_SENDCOINS_ENABLED === 'true' || false,
|
|
// default value for community-uuid is equal uuid of stage-3
|
|
FEDERATION_XCOM_RECEIVER_COMMUNITY_UUID:
|
|
process.env.FEDERATION_XCOM_RECEIVER_COMMUNITY_UUID ?? '56a55482-909e-46a4-bfa2-cd025e894ebc',
|
|
FEDERATION_XCOM_MAXREPEAT_REVERTSENDCOINS: parseInt(
|
|
process.env.FEDERATION_XCOM_MAXREPEAT_REVERTSENDCOINS ?? '3',
|
|
),
|
|
}
|
|
|
|
const gms = {
|
|
GMS_ACTIVE: process.env.GMS_ACTIVE === 'true' || false,
|
|
GMS_CREATE_USER_THROW_ERRORS: process.env.GMS_CREATE_USER_THROW_ERRORS === 'true' || false,
|
|
// koordinates of Illuminz-instance of GMS
|
|
GMS_API_URL: process.env.GMS_API_URL ?? 'http://localhost:4044/',
|
|
GMS_DASHBOARD_URL: process.env.GMS_DASHBOARD_URL ?? 'http://localhost:8080/',
|
|
GMS_USER_SEARCH_FRONTEND_ROUTE: process.env.GMS_USER_SEARCH_FRONTEND_ROUTE ?? 'user-search',
|
|
// used as secret postfix attached at the gms community-auth-url endpoint ('/hook/gms/' + 'secret')
|
|
GMS_WEBHOOK_SECRET: process.env.GMS_WEBHOOK_SECRET ?? 'secret',
|
|
}
|
|
|
|
const humhub = {
|
|
HUMHUB_ACTIVE: process.env.HUMHUB_ACTIVE === 'true' || false,
|
|
HUMHUB_API_URL: process.env.HUMHUB_API_URL ?? COMMUNITY_URL + '/community/',
|
|
HUMHUB_JWT_KEY: process.env.HUMHUB_JWT_KEY ?? '',
|
|
}
|
|
|
|
const openai = {
|
|
OPENAI_ACTIVE: process.env.OPENAI_ACTIVE === 'true' || false,
|
|
OPENAI_API_KEY: process.env.OPENAI_API_KEY ?? '',
|
|
OPENAI_ASSISTANT_ID: process.env.OPENAI_ASSISTANT_ID ?? '',
|
|
}
|
|
|
|
export const CONFIG = {
|
|
...constants,
|
|
...server,
|
|
...database,
|
|
...klicktipp,
|
|
...dltConnector,
|
|
...community,
|
|
...email,
|
|
...loginServer,
|
|
...webhook,
|
|
...federation,
|
|
...gms,
|
|
...humhub,
|
|
...openai,
|
|
}
|
|
validate(schema, CONFIG)
|