diff --git a/Jenkinsfile b/Jenkinsfile
index 8a079d35b..6f0a642b4 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -161,7 +161,6 @@ pipeline {
def packageJson = readJSON file: 'package.json'
env.VERSION = packageJson.version
}
- echo "BRANCH_NAME: ${env.BRANCH_NAME}"
sh 'gulp build'
sh 'docker-compose build front'
}
diff --git a/docker-compose.yml b/docker-compose.yml
index 5bb168093..ec40311c0 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -6,6 +6,7 @@ services:
context: front
environment:
- TZ
+ - NODE_ENV
ports:
- 80
deploy:
diff --git a/front/Dockerfile b/front/Dockerfile
index c507d863c..db1cb0673 100644
--- a/front/Dockerfile
+++ b/front/Dockerfile
@@ -4,7 +4,9 @@ ENV TZ Europe/Madrid
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
- && apt-get install -y --no-install-recommends nginx \
+ && apt-get install -y --no-install-recommends \
+ nginx \
+ gettext-base \
&& rm -rf /var/lib/apt/lists/* \
&& ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log
@@ -14,5 +16,7 @@ COPY nginx.conf sites-available/salix
RUN rm sites-enabled/default && ln -s ../sites-available/salix sites-enabled/salix
COPY dist /salix/dist
+COPY env.template.js /salix/dist
+COPY nginx-entrypoint.sh /
-CMD ["nginx", "-g", "daemon off;"]
+ENTRYPOINT [ "sh", "/nginx-entrypoint.sh" ]
diff --git a/front/env.template.js b/front/env.template.js
new file mode 100644
index 000000000..dbeb2f67b
--- /dev/null
+++ b/front/env.template.js
@@ -0,0 +1,3 @@
+window.process = {
+ env: {NODE_ENV: '${NODE_ENV}'}
+};
diff --git a/front/nginx-entrypoint.sh b/front/nginx-entrypoint.sh
new file mode 100644
index 000000000..a6d2b744a
--- /dev/null
+++ b/front/nginx-entrypoint.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+WWW_DIR=/salix/dist
+INJECT_FILE_SRC="${WWW_DIR}/env.template.js"
+INJECT_FILE_DST="${WWW_DIR}/env.js"
+envsubst < "${INJECT_FILE_SRC}" > "${INJECT_FILE_DST}"
+[ -z "$@" ] && nginx -g 'daemon off;' || $@
diff --git a/front/salix/index.ejs b/front/salix/index.ejs
index 3aed9d9a6..87a59ef86 100644
--- a/front/salix/index.ejs
+++ b/front/salix/index.ejs
@@ -5,6 +5,8 @@
+
diff --git a/gulpfile.js b/gulpfile.js
index 045d3ac41..1127c5cbd 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -139,6 +139,9 @@ function webpack(done) {
webpack.description = `Transpiles application into files`;
function webpackDevServer(done) {
+ const replace = require('gulp-replace');
+ const rename = require('gulp-rename');
+
const webpack = require('webpack');
const merge = require('webpack-merge');
const WebpackDevServer = require('webpack-dev-server');
@@ -148,6 +151,12 @@ function webpackDevServer(done) {
let devServer = wpConfig.devServer;
+ // local env
+ gulp.src(srcDir + '/env.template.js')
+ .pipe(replace('${NODE_ENV}', 'development'))
+ .pipe(rename('env.js'))
+ .pipe(gulp.dest(buildDir));
+
for (let entryName in wpConfig.entry) {
let entry = wpConfig.entry[entryName];
if (!Array.isArray(entry))
diff --git a/modules/client/back/methods/client/clientDebtStatementPdf.js b/modules/client/back/methods/client/clientDebtStatementPdf.js
index 845527ace..ebe28affc 100644
--- a/modules/client/back/methods/client/clientDebtStatementPdf.js
+++ b/modules/client/back/methods/client/clientDebtStatementPdf.js
@@ -40,7 +40,8 @@ module.exports = Self => {
http: {
path: '/:id/client-debt-statement-pdf',
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.clientDebtStatementPdf = (ctx, id) => Self.printReport(ctx, id, 'client-debt-statement');
diff --git a/modules/client/back/methods/client/createReceipt.js b/modules/client/back/methods/client/createReceipt.js
index debdaf066..e2a57272b 100644
--- a/modules/client/back/methods/client/createReceipt.js
+++ b/modules/client/back/methods/client/createReceipt.js
@@ -3,6 +3,7 @@ const UserError = require('vn-loopback/util/user-error');
module.exports = function(Self) {
Self.remoteMethodCtx('createReceipt', {
description: 'Creates receipt and its compensation if necessary',
+ accessType: 'READ',
accepts: [{
arg: 'clientFk',
type: 'number',
@@ -45,7 +46,8 @@ module.exports = function(Self) {
http: {
verb: 'post',
path: '/:clientFk/createReceipt'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.createReceipt = async(ctx, options) => {
diff --git a/modules/client/back/methods/client/creditRequestPdf.js b/modules/client/back/methods/client/creditRequestPdf.js
index a4f4ed128..44c74dd7c 100644
--- a/modules/client/back/methods/client/creditRequestPdf.js
+++ b/modules/client/back/methods/client/creditRequestPdf.js
@@ -35,7 +35,8 @@ module.exports = Self => {
http: {
path: '/:id/credit-request-pdf',
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.creditRequestPdf = (ctx, id) => Self.printReport(ctx, id, 'credit-request');
diff --git a/modules/client/back/methods/client/incotermsAuthorizationPdf.js b/modules/client/back/methods/client/incotermsAuthorizationPdf.js
index ffe17c72f..59e9f5d5c 100644
--- a/modules/client/back/methods/client/incotermsAuthorizationPdf.js
+++ b/modules/client/back/methods/client/incotermsAuthorizationPdf.js
@@ -47,7 +47,8 @@ module.exports = Self => {
http: {
path: '/:id/incoterms-authorization-pdf',
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.incotermsAuthorizationPdf = (ctx, id) => Self.printReport(ctx, id, 'incoterms-authorization');
diff --git a/modules/client/back/methods/client/letterDebtorPdf.js b/modules/client/back/methods/client/letterDebtorPdf.js
index 943869143..0b7880e37 100644
--- a/modules/client/back/methods/client/letterDebtorPdf.js
+++ b/modules/client/back/methods/client/letterDebtorPdf.js
@@ -41,7 +41,8 @@ module.exports = Self => {
http: {
path: '/:id/letter-debtor-pdf',
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.letterDebtorPdf = (ctx, id) => Self.printReport(ctx, id, 'letter-debtor');
diff --git a/modules/client/back/methods/receipt/balanceCompensationPdf.js b/modules/client/back/methods/receipt/balanceCompensationPdf.js
index e790d54a1..74cbb01f6 100644
--- a/modules/client/back/methods/receipt/balanceCompensationPdf.js
+++ b/modules/client/back/methods/receipt/balanceCompensationPdf.js
@@ -29,7 +29,8 @@ module.exports = Self => {
http: {
path: '/:id/balance-compensation-pdf',
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.balanceCompensationPdf = (ctx, id) => Self.printReport(ctx, id, 'balance-compensation');
diff --git a/modules/client/back/methods/receipt/receiptPdf.js b/modules/client/back/methods/receipt/receiptPdf.js
index 6e49de22a..da33f1ed4 100644
--- a/modules/client/back/methods/receipt/receiptPdf.js
+++ b/modules/client/back/methods/receipt/receiptPdf.js
@@ -34,7 +34,8 @@ module.exports = Self => {
http: {
path: '/:id/receipt-pdf',
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.receiptPdf = (ctx, id) => Self.printReport(ctx, id, 'receipt');
diff --git a/modules/invoiceOut/back/methods/invoiceOut/invoiceOutPdf.js b/modules/invoiceOut/back/methods/invoiceOut/invoiceOutPdf.js
index 941d31596..f4bb6baa9 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/invoiceOutPdf.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/invoiceOutPdf.js
@@ -31,7 +31,8 @@ module.exports = Self => {
http: {
path: '/:reference/invoice-out-pdf',
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.invoiceOutPdf = async(ctx, reference) => {
diff --git a/modules/item/back/methods/item/labelPdf.js b/modules/item/back/methods/item/labelPdf.js
index c2462353d..d7a50397e 100644
--- a/modules/item/back/methods/item/labelPdf.js
+++ b/modules/item/back/methods/item/labelPdf.js
@@ -51,7 +51,8 @@ module.exports = Self => {
http: {
path: '/:id/label-pdf',
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.labelPdf = (ctx, id) => Self.printReport(ctx, id, 'item-label');
diff --git a/modules/ticket/back/methods/ticket/docuwareDownload.js b/modules/ticket/back/methods/ticket/docuwareDownload.js
index 7084bbdd4..f89509570 100644
--- a/modules/ticket/back/methods/ticket/docuwareDownload.js
+++ b/modules/ticket/back/methods/ticket/docuwareDownload.js
@@ -28,7 +28,8 @@ module.exports = Self => {
http: {
path: `/:id/docuwareDownload`,
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.docuwareDownload = async id => {
diff --git a/package.json b/package.json
index 906b86dff..390b61be1 100644
--- a/package.json
+++ b/package.json
@@ -82,6 +82,8 @@
"gulp-print": "^2.0.1",
"gulp-wrap": "^0.15.0",
"gulp-yaml": "^1.0.1",
+ "gulp-rename": "^2.0.0",
+ "gulp-replace": "^1.1.4",
"html-loader": "^0.4.5",
"html-loader-jest": "^0.2.1",
"html-webpack-plugin": "^5.5.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c4425d3dc..22d5b46f1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -202,6 +202,12 @@ devDependencies:
gulp-print:
specifier: ^2.0.1
version: 2.0.1
+ gulp-rename:
+ specifier: ^2.0.0
+ version: 2.0.0
+ gulp-replace:
+ specifier: ^1.1.4
+ version: 1.1.4
gulp-wrap:
specifier: ^0.15.0
version: 0.15.0(ejs@2.3.1)
@@ -2632,6 +2638,10 @@ packages:
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
dev: true
+ /@types/expect@1.20.4:
+ resolution: {integrity: sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==}
+ dev: true
+
/@types/express-serve-static-core@4.17.42:
resolution: {integrity: sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ==}
dependencies:
@@ -2790,6 +2800,13 @@ packages:
resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==}
dev: false
+ /@types/vinyl@2.0.12:
+ resolution: {integrity: sha512-Sr2fYMBUVGYq8kj3UthXFAu5UN6ZW+rYr4NACjZQJvHvj+c8lYv0CahmZ2P/r7iUkN44gGUBwqxZkrKXYPb7cw==}
+ dependencies:
+ '@types/expect': 1.20.4
+ '@types/node': 20.11.16
+ dev: true
+
/@types/yargs-parser@21.0.3:
resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
dev: true
@@ -3770,6 +3787,11 @@ packages:
engines: {node: '>=8'}
dev: true
+ /binaryextensions@2.3.0:
+ resolution: {integrity: sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==}
+ engines: {node: '>=0.8'}
+ dev: true
+
/bindings@1.5.0:
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
requiresBuild: true
@@ -7090,6 +7112,22 @@ packages:
map-stream: 0.0.7
dev: true
+ /gulp-rename@2.0.0:
+ resolution: {integrity: sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /gulp-replace@1.1.4:
+ resolution: {integrity: sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@types/node': 20.11.16
+ '@types/vinyl': 2.0.12
+ istextorbinary: 3.3.0
+ replacestream: 4.0.3
+ yargs-parser: 21.1.1
+ dev: true
+
/gulp-util@3.0.8:
resolution: {integrity: sha512-q5oWPc12lwSFS9h/4VIjG+1NuNDlJ48ywV2JKItY4Ycc/n1fXJeYPVQsfu5ZrhQi7FGSDBalwUCLar/GyHXKGw==}
engines: {node: '>=0.10'}
@@ -8324,6 +8362,14 @@ packages:
istanbul-lib-report: 3.0.1
dev: true
+ /istextorbinary@3.3.0:
+ resolution: {integrity: sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ binaryextensions: 2.3.0
+ textextensions: 3.3.0
+ dev: true
+
/jackspeak@2.3.6:
resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
engines: {node: '>=14'}
@@ -12065,6 +12111,14 @@ packages:
remove-trailing-separator: 1.1.0
dev: true
+ /replacestream@4.0.3:
+ resolution: {integrity: sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==}
+ dependencies:
+ escape-string-regexp: 1.0.5
+ object-assign: 4.1.1
+ readable-stream: 2.3.8
+ dev: true
+
/request@2.88.2:
resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==}
engines: {node: '>= 6'}
@@ -13563,6 +13617,11 @@ packages:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
+ /textextensions@3.3.0:
+ resolution: {integrity: sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==}
+ engines: {node: '>=8'}
+ dev: true
+
/throat@5.0.0:
resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==}
dev: true
diff --git a/webpack.config.js b/webpack.config.js
index 7296a62d1..2c01a10eb 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -70,6 +70,7 @@ let baseConfig = {
]
},
optimization: {
+ nodeEnv: false,
runtimeChunk: true,
splitChunks: {
chunks: 'all',
@@ -99,9 +100,6 @@ let baseConfig = {
filename: 'index.html',
chunks: ['salix']
}),
- new webpack.DefinePlugin({
- 'process.env.NODE_ENV': JSON.stringify(env)
- })
],
devtool: 'source-map',
stats: {