enforce config in frontend

This commit is contained in:
Ulf Gebhardt 2022-03-22 13:07:01 +01:00
parent 28588ae25c
commit 703217e938
Signed by: ulfgebhardt
GPG Key ID: DA6B843E748679C9
4 changed files with 56 additions and 32 deletions

View File

@ -1,3 +1,5 @@
CONFIG_VERSION=v1.2022-03-18
META_URL=http://localhost META_URL=http://localhost
META_TITLE_DE="Gradido Dein Dankbarkeitskonto" META_TITLE_DE="Gradido Dein Dankbarkeitskonto"
META_TITLE_EN="Gradido - Your gratitude account" META_TITLE_EN="Gradido - Your gratitude account"

View File

@ -1,3 +1,5 @@
CONFIG_VERSION=$FRONTEND_CONFIG_VERSION
META_URL=$META_URL META_URL=$META_URL
META_TITLE_DE=$META_TITLE_DE META_TITLE_DE=$META_TITLE_DE
META_TITLE_EN=$META_TITLE_EN META_TITLE_EN=$META_TITLE_EN

View File

@ -4,6 +4,14 @@
// Load Package Details for some default values // Load Package Details for some default values
const pkg = require('../../package') const pkg = require('../../package')
const constants = {
CONFIG_VERSION: {
DEFAULT: 'DEFAULT',
EXPECTED: 'v1.2022-03-18',
CURRENT: '',
},
}
const version = { const version = {
APP_VERSION: pkg.version, APP_VERSION: pkg.version,
BUILD_COMMIT: process.env.BUILD_COMMIT || null, BUILD_COMMIT: process.env.BUILD_COMMIT || null,
@ -16,39 +24,50 @@ const environment = {
DEBUG: process.env.NODE_ENV !== 'production' || false, DEBUG: process.env.NODE_ENV !== 'production' || false,
PRODUCTION: process.env.NODE_ENV === 'production' || false, PRODUCTION: process.env.NODE_ENV === 'production' || false,
DEFAULT_PUBLISHER_ID: process.env.DEFAULT_PUBLISHER_ID || 2896, DEFAULT_PUBLISHER_ID: process.env.DEFAULT_PUBLISHER_ID || 2896,
PORT: process.env.PORT || 3000,
} }
// const meta = { const meta = {
// META_URL: process.env.META_URL || 'http://localhost', META_URL: process.env.META_URL || 'http://localhost',
// META_TITLE_DE: process.env.META_TITLE_DE || 'Gradido Dein Dankbarkeitskonto', META_TITLE_DE: process.env.META_TITLE_DE || 'Gradido Dein Dankbarkeitskonto',
// META_TITLE_EN: process.env.META_TITLE_EN || 'Gradido - Your gratitude account', META_TITLE_EN: process.env.META_TITLE_EN || 'Gradido - Your gratitude account',
// META_DESCRIPTION_DE: META_DESCRIPTION_DE:
// process.env.META_DESCRIPTION_DE || process.env.META_DESCRIPTION_DE ||
// 'Dankbarkeit ist die Währung der neuen Zeit. Immer mehr Menschen entfalten ihr Potenzial und gestalten eine gute Zukunft für alle.', 'Dankbarkeit ist die Währung der neuen Zeit. Immer mehr Menschen entfalten ihr Potenzial und gestalten eine gute Zukunft für alle.',
// META_DESCRIPTION_EN: META_DESCRIPTION_EN:
// process.env.META_DESCRIPTION_EN || process.env.META_DESCRIPTION_EN ||
// 'Gratitude is the currency of the new age. More and more people are unleashing their potential and shaping a good future for all.', 'Gratitude is the currency of the new age. More and more people are unleashing their potential and shaping a good future for all.',
// META_KEYWORDS_DE: META_KEYWORDS_DE:
// process.env.META_KEYWORDS_DE || process.env.META_KEYWORDS_DE ||
// 'Grundeinkommen, Währung, Dankbarkeit, Schenk-Ökonomie, Natürliche Ökonomie des Lebens, Ökonomie, Ökologie, Potenzialentfaltung, Schenken und Danken, Kreislauf des Lebens, Geldsystem', 'Grundeinkommen, Währung, Dankbarkeit, Schenk-Ökonomie, Natürliche Ökonomie des Lebens, Ökonomie, Ökologie, Potenzialentfaltung, Schenken und Danken, Kreislauf des Lebens, Geldsystem',
// META_KEYWORDS_EN: META_KEYWORDS_EN:
// process.env.META_KEYWORDS_EN || process.env.META_KEYWORDS_EN ||
// 'Basic Income, Currency, Gratitude, Gift Economy, Natural Economy of Life, Economy, Ecology, Potential Development, Giving and Thanking, Cycle of Life, Monetary System', 'Basic Income, Currency, Gratitude, Gift Economy, Natural Economy of Life, Economy, Ecology, Potential Development, Giving and Thanking, Cycle of Life, Monetary System',
// META_AUTHOR: process.env.META_AUTHOR || 'Bernd Hückstädt - Gradido-Akademie', META_AUTHOR: process.env.META_AUTHOR || 'Bernd Hückstädt - Gradido-Akademie',
// } }
const endpoints = { const endpoints = {
GRAPHQL_URI: process.env.GRAPHQL_URI || 'http://localhost/graphql', GRAPHQL_URI: process.env.GRAPHQL_URI || 'http://localhost/graphql',
ADMIN_AUTH_URL: process.env.ADMIN_AUTH_URL || 'http://localhost/admin/authenticate?token={token}', ADMIN_AUTH_URL: process.env.ADMIN_AUTH_URL || 'http://localhost/admin/authenticate?token={token}',
} }
const options = {} // Check config version
constants.CONFIG_VERSION.CURRENT = process.env.CONFIG_VERSION || constants.CONFIG_VERSION.DEFAULT
if (
![constants.CONFIG_VERSION.EXPECTED, constants.CONFIG_VERSION.DEFAULT].includes(
constants.CONFIG_VERSION.CURRENT,
)
) {
throw new Error(
`Fatal: Config Version incorrect - expected "${constants.CONFIG_VERSION.EXPECTED}" or "${constants.CONFIG_VERSION.DEFAULT}", but found "${constants.CONFIG_VERSION.CURRENT}"`,
)
}
const CONFIG = { const CONFIG = {
...version, ...version,
...environment, ...environment,
...endpoints, ...endpoints,
...options, ...meta,
} }
export default CONFIG module.exports = CONFIG

View File

@ -3,11 +3,12 @@ const webpack = require('webpack')
const Dotenv = require('dotenv-webpack') const Dotenv = require('dotenv-webpack')
const StatsPlugin = require('stats-webpack-plugin') const StatsPlugin = require('stats-webpack-plugin')
const HtmlWebpackPlugin = require('vue-html-webpack-plugin') const HtmlWebpackPlugin = require('vue-html-webpack-plugin')
const CONFIG = require('./src/config')
// vue.config.js // vue.config.js
module.exports = { module.exports = {
devServer: { devServer: {
port: process.env.PORT || 3000, port: CONFIG.PORT,
}, },
pluginOptions: { pluginOptions: {
i18n: { i18n: {
@ -35,7 +36,7 @@ module.exports = {
// 'process.env.DOCKER_WORKDIR': JSON.stringify(process.env.DOCKER_WORKDIR), // 'process.env.DOCKER_WORKDIR': JSON.stringify(process.env.DOCKER_WORKDIR),
// 'process.env.BUILD_DATE': JSON.stringify(process.env.BUILD_DATE), // 'process.env.BUILD_DATE': JSON.stringify(process.env.BUILD_DATE),
// 'process.env.BUILD_VERSION': JSON.stringify(process.env.BUILD_VERSION), // 'process.env.BUILD_VERSION': JSON.stringify(process.env.BUILD_VERSION),
'process.env.BUILD_COMMIT': JSON.stringify(process.env.BUILD_COMMIT), 'process.env.BUILD_COMMIT': JSON.stringify(CONFIG.BUILD_COMMIT),
// 'process.env.PORT': JSON.stringify(process.env.PORT), // 'process.env.PORT': JSON.stringify(process.env.PORT),
}), }),
// generate webpack stats to allow analysis of the bundlesize // generate webpack stats to allow analysis of the bundlesize
@ -44,14 +45,14 @@ module.exports = {
vue: true, vue: true,
template: 'public/index.html', template: 'public/index.html',
meta: { meta: {
title_de: process.env.META_TITLE_DE, title_de: CONFIG.META_TITLE_DE,
title_en: process.env.META_TITLE_EN, title_en: CONFIG.META_TITLE_EN,
description_de: process.env.META_DESCRIPTION_DE, description_de: CONFIG.META_DESCRIPTION_DE,
description_en: process.env.META_DESCRIPTION_EN, description_en: CONFIG.META_DESCRIPTION_EN,
keywords_de: process.env.META_KEYWORDS_DE, keywords_de: CONFIG.META_KEYWORDS_DE,
keywords_en: process.env.META_KEYWORDS_EN, keywords_en: CONFIG.META_KEYWORDS_EN,
author: process.env.META_AUTHOR, author: CONFIG.META_AUTHOR,
url: process.env.META_URL, url: CONFIG.META_URL,
}, },
}), }),
], ],
@ -61,7 +62,7 @@ module.exports = {
}, },
css: { css: {
// Enable CSS source maps. // Enable CSS source maps.
sourceMap: process.env.NODE_ENV !== 'production', sourceMap: CONFIG.NODE_ENV !== 'production',
}, },
outputDir: path.resolve(__dirname, './dist'), outputDir: path.resolve(__dirname, './dist'),
} }