From fd421cda15c9742b86cf737ce76129c9fe98c680 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 28 Apr 2024 15:07:48 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=82=20Adds=20option=20for=20env=20vars?= =?UTF-8?q?=20for=20passwords?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/authentication.md | 22 ++++ src/utils/Auth.js | 31 +++-- yarn.lock | 264 ++++++++++++++++++++++------------------- 3 files changed, 183 insertions(+), 134 deletions(-) diff --git a/docs/authentication.md b/docs/authentication.md index acd70b77..4430d9b0 100644 --- a/docs/authentication.md +++ b/docs/authentication.md @@ -6,7 +6,10 @@ - [Logging In and Out](#logging-in-and-out) - [Guest Access](#enabling-guest-access) - [Per-User Access](#granular-access) + - [Using Environment Variables for Passwords](#using-environment-variables-for-passwords) + - [Adding HTTP Auth to Configuration](#adding-http-auth-to-configuration) - [Security Considerations](#security) +- [HTTP Auth](#http-auth) - [Keycloak Auth](#keycloak) - [Deploying Keycloak](#1-deploy-keycloak) - [Setting up Keycloak](#2-setup-keycloak-users) @@ -115,6 +118,23 @@ You can also prevent any user from writing changes to disk, using `preventWriteT To disable all UI config features, including View Config, set `disableConfiguration`. Alternatively you can disable UI config features for all non admin users by setting `disableConfigurationForNonAdmin` to true. +### Using Environment Variables for Passwords + +If you don't want to hash your password, you can instead leave out the `hash` attribute, and replace it with `password` which should have the value of an environmental variable name you wish to use. + +Note that env var must begin with `VUE_APP_`, and you must set this variable before building the app. + +For example: + +```yaml + auth: + users: + - user: bob + password: VUE_APP_BOB +``` + +Just be sure to set `VUE_APP_BOB='my super secret password'` before build-time. + ### Adding HTTP Auth to Configuration If you'd also like to prevent direct visit access to your configuration file, you can set the `ENABLE_HTTP_AUTH` environmental variable. @@ -133,6 +153,8 @@ If you'd like to protect all your config files from direct access, you can set t Then, if you'd like your frontend to automatically log you in, without prompting you for credentials, then also specify `VUE_APP_BASIC_AUTH_USERNAME` and `VUE_APP_BASIC_AUTH_PASSWORD`. This is useful for when you're hosting Dashy on a private server, and you want to prevent unauthorized access to your config files, while still allowing the frontend to access them. Note that a rebuild is required for these changes to take effect. +**[⬆️ Back to Top](#authentication)** + --- ## Keycloak diff --git a/src/utils/Auth.js b/src/utils/Auth.js index b36aed0f..9114458e 100644 --- a/src/utils/Auth.js +++ b/src/utils/Auth.js @@ -11,8 +11,6 @@ const getAppConfig = () => { return config.appConfig || {}; }; -// const appConfig = $store.getters.appConfig || {}; - /** * Called when the user is still using array for users, prints warning * This was a breaking change, implemented in V 1.6.5 @@ -41,12 +39,13 @@ const getUsers = () => { * @returns {String} The hashed token */ const generateUserToken = (user) => { - if (!user.user || !user.hash) { - ErrorHandler('Invalid user object. Must have `user` and `hash` parameters'); + if (!user.user || (!user.hash && !user.password)) { + ErrorHandler('Invalid user object. Must have `user` and either a `hash` or `password` param'); return undefined; } + const passHash = user.hash || sha256(process.env[user.password]).toString().toUpperCase(); const strAndUpper = (input) => input.toString().toUpperCase(); - const sha = sha256(strAndUpper(user.user) + strAndUpper(user.hash)); + const sha = sha256(strAndUpper(user.user) + strAndUpper(passHash)); return strAndUpper(sha); }; @@ -59,15 +58,18 @@ export const getCookieToken = () => { export const makeBasicAuthHeaders = () => { const token = getCookieToken(); - const bearerAuth = token ? `Bearer ${token}` : null; + const bearerAuth = (token && token.length > 5) ? `Bearer ${token}` : null; - const username = process.env.VUE_APP_BASIC_AUTH_USERNAME || 'user'; + const username = process.env.VUE_APP_BASIC_AUTH_USERNAME + || localStorage[localStorageKeys.USERNAME] + || 'user'; const password = process.env.VUE_APP_BASIC_AUTH_PASSWORD || bearerAuth; const basicAuth = `Basic ${btoa(`${username}:${password}`)}`; - return (token || username) + const headers = password ? { headers: { Authorization: basicAuth, 'WWW-Authenticate': 'true' } } : {}; + return headers; }; /** @@ -119,7 +121,18 @@ export const checkCredentials = (username, pass, users, messages) => { } else { users.forEach((user) => { if (user.user.toLowerCase() === username.toLowerCase()) { // User found - if (user.hash.toLowerCase() === sha256(pass).toString().toLowerCase()) { + if (user.password) { + if (!user.password.startsWith('VUE_APP_')) { + ErrorHandler('Invalid password format. Please use VUE_APP_ prefix'); + response = { correct: false, msg: messages.incorrectPassword }; + } else if (!process.env[user.password]) { + ErrorHandler(`Missing environmental variable for ${user.password}`); + } else if (process.env[user.password] === pass) { + response = { correct: true, msg: messages.successMsg }; + } else { + response = { correct: false, msg: messages.incorrectPassword }; + } + } else if (user.hash && user.hash.toLowerCase() === sha256(pass).toString().toLowerCase()) { response = { correct: true, msg: messages.successMsg }; // Password is correct } else { // User found, but password is not a match response = { correct: false, msg: messages.incorrectPassword }; diff --git a/yarn.lock b/yarn.lock index d6d15923..0afa5771 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1179,93 +1179,93 @@ mkdirp "^1.0.4" rimraf "^3.0.2" -"@sentry-internal/feedback@7.110.0": - version "7.110.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-7.110.0.tgz#7103a08cd6bfb43583087d7476a5f24c5857cc22" - integrity sha512-hrfWa3WkSOiBO5Srcr1j4kuGOlbsQic+REpLOofllVIs56DOo9+Aj9svxT+dcvZERv/nlFSV/E0BfGy9g08IEg== +"@sentry-internal/feedback@7.111.0": + version "7.111.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-7.111.0.tgz#c715e7e6a1877b60cd1f4dff85969660e0deff3f" + integrity sha512-xaKgPPDEirOan7c9HwzYA1KK87kRp/qfIx9ZKLOEtxwy6nqoMuSByGqSwm1Oqfcjpbd7y6/y+7Bw+69ZKNVLDQ== dependencies: - "@sentry/core" "7.110.0" - "@sentry/types" "7.110.0" - "@sentry/utils" "7.110.0" + "@sentry/core" "7.111.0" + "@sentry/types" "7.111.0" + "@sentry/utils" "7.111.0" -"@sentry-internal/replay-canvas@7.110.0": - version "7.110.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-7.110.0.tgz#af21b56157f44c44a2eedf4326ef37f4ea440fa8" - integrity sha512-SNa+AfyfX+vc6Xw0pIfDsa5Qnc9cpexU6M2D19gadtVhmep7qoFBuhBVZrSv6BtdCxvrb5EyYsHYGfjQdIDcvg== +"@sentry-internal/replay-canvas@7.111.0": + version "7.111.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-7.111.0.tgz#aa3cba0477f312cbf40eff4eabeaeda6221a55b6" + integrity sha512-3KPBIpiegTYmuVw9gA2aKuliAQONS3Ny1kJc9x5kz6XQGuLFxqlh6KzoCVaKfQJeq2WJqRNeR4KFFuNGuB3H8w== dependencies: - "@sentry/core" "7.110.0" - "@sentry/replay" "7.110.0" - "@sentry/types" "7.110.0" - "@sentry/utils" "7.110.0" + "@sentry/core" "7.111.0" + "@sentry/replay" "7.111.0" + "@sentry/types" "7.111.0" + "@sentry/utils" "7.111.0" -"@sentry-internal/tracing@7.110.0": - version "7.110.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.110.0.tgz#00f2086b0efb8dd5a67831074e52b176aa542d32" - integrity sha512-IIHHa9e/mE7uOMJfNELI8adyoELxOy6u6TNCn5t6fphmq84w8FTc9adXkG/FY2AQpglkIvlILojfMROFB2aaAQ== +"@sentry-internal/tracing@7.111.0": + version "7.111.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.111.0.tgz#b352df9f38009c5d306308a829a1dd9a57f084fd" + integrity sha512-CgXly8rsdu4loWVKi2RqpInH3C2cVBuaYsx4ZP5IJpzSinsUAMyyr3Pc0PZzCyoVpBBXGBGj/4HhFsY3q6Z0Vg== dependencies: - "@sentry/core" "7.110.0" - "@sentry/types" "7.110.0" - "@sentry/utils" "7.110.0" + "@sentry/core" "7.111.0" + "@sentry/types" "7.111.0" + "@sentry/utils" "7.111.0" -"@sentry/browser@7.110.0": - version "7.110.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.110.0.tgz#40900d76a8f423a7163a594ec9267a2e0ebd8a5b" - integrity sha512-gIxedVm6ZgkjQfgCDgLWJgAsolq6OxV8hQ2j1+RaDL2RngvelFo/vlX5f2sD6EbjVp77Cri8u5GkMJF+v4p84g== +"@sentry/browser@7.111.0": + version "7.111.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.111.0.tgz#29da73e7192eb5643d101c47922d7374e4cc88ed" + integrity sha512-x7S9XoJh+TbMnur4eBhPpCVo+p7udABBV2gQk+Iw6LP9e8EFKmGmNyl76vSsT6GeFJ7mwxDEKfuwbVoLBjIvHw== dependencies: - "@sentry-internal/feedback" "7.110.0" - "@sentry-internal/replay-canvas" "7.110.0" - "@sentry-internal/tracing" "7.110.0" - "@sentry/core" "7.110.0" - "@sentry/replay" "7.110.0" - "@sentry/types" "7.110.0" - "@sentry/utils" "7.110.0" + "@sentry-internal/feedback" "7.111.0" + "@sentry-internal/replay-canvas" "7.111.0" + "@sentry-internal/tracing" "7.111.0" + "@sentry/core" "7.111.0" + "@sentry/replay" "7.111.0" + "@sentry/types" "7.111.0" + "@sentry/utils" "7.111.0" -"@sentry/core@7.110.0": - version "7.110.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.110.0.tgz#2945d3ac0ef116ed313fbfb9da4f483b66fe5bca" - integrity sha512-g4suCQO94mZsKVaAbyD1zLFC5YSuBQCIPHXx9fdgtfoPib7BWjWWePkllkrvsKAv4u8Oq05RfnKOhOMRHpOKqg== +"@sentry/core@7.111.0": + version "7.111.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.111.0.tgz#54c9037a3b79b3623377dce1887b69b40670e201" + integrity sha512-/ljeMjZu8CSrLGrseBi/7S2zRIFsqMcvfyG6Nwgfc07J9nbHt8/MqouE1bXZfiaILqDBpK7BK9MLAAph4mkAWg== dependencies: - "@sentry/types" "7.110.0" - "@sentry/utils" "7.110.0" + "@sentry/types" "7.111.0" + "@sentry/utils" "7.111.0" -"@sentry/replay@7.110.0": - version "7.110.0" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.110.0.tgz#e185c88cec573724b46b79ada7ef5a7098acd1b6" - integrity sha512-EEpGPf3iBJjWejvoxKLVMnLtLNwPTUxHJV1oxUkbcSi3B/tG5hW7LArYDjAcvkfa4VmA8JLCwj2vYU5MQ8tj6g== +"@sentry/replay@7.111.0": + version "7.111.0" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.111.0.tgz#6d21bddf2ec245db6eb2c471e81efd94364107ae" + integrity sha512-cSbI4A4hrO0sZ0ynvLQauPg8YyaDOQkhGkyvbws8W9WgfxR8X827bY9S0f1TPfgaFiVcKb0iRaAwyXHg3pyzOg== dependencies: - "@sentry-internal/tracing" "7.110.0" - "@sentry/core" "7.110.0" - "@sentry/types" "7.110.0" - "@sentry/utils" "7.110.0" + "@sentry-internal/tracing" "7.111.0" + "@sentry/core" "7.111.0" + "@sentry/types" "7.111.0" + "@sentry/utils" "7.111.0" "@sentry/tracing@^7.102.1": - version "7.110.0" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.110.0.tgz#9e8836babba9894309d337f3006b98d79b863329" - integrity sha512-pAydcCqzyzn2Uv9qmuDX5saHbXp4eMMsBW2C/oSkVdKQQSdA7JeG27d82Jz3cMVrfjv105lShP5qS2YjhBTkow== + version "7.111.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.111.0.tgz#3c9da76e6ca1f2e17e138ce828330e93e53f67a4" + integrity sha512-+BHvdCJxcNnBkru3Y5aFZssEwyNU/mwPTSZqYOhFilokVIrDmVrP/R9g8jHSUqXF4KwB3RaknTPj/4484Z0erA== dependencies: - "@sentry-internal/tracing" "7.110.0" + "@sentry-internal/tracing" "7.111.0" -"@sentry/types@7.110.0": - version "7.110.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.110.0.tgz#c3f252b008cab905097fc71e174191f20bdaf4f3" - integrity sha512-DqYBLyE8thC5P5MuPn+sj8tL60nCd/f5cerFFPcudn5nJ4Zs1eI6lKlwwyHYTEu5c4KFjCB0qql6kXfwAHmTyA== +"@sentry/types@7.111.0": + version "7.111.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.111.0.tgz#9c869c3c51d606041916765ba58f29de915707ac" + integrity sha512-Oti4pgQ55+FBHKKcHGu51ZUxO1u52G5iVNK4mbtAN+5ArSCy/2s1H8IDJiOMswn3acfUnCR0oB/QsbEgAPZ26g== -"@sentry/utils@7.110.0": - version "7.110.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.110.0.tgz#68ef59359d608a1a6a7205b780196a042ad73ab2" - integrity sha512-VBsdLLN+5tf73fhf/Cm7JIsUJ6y9DkJj8h4I6Mxx0rszrvOyH6S5px40K+V4jdLBzMEvVinC7q2Cbf1YM18BSw== +"@sentry/utils@7.111.0": + version "7.111.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.111.0.tgz#e006cc1e751b30ff5cf914c34eb143102e2e8c2d" + integrity sha512-CB5rz1EgCSwj3xoXogsCZ5pQtfERrURc/ItcCuoaijUhkD0iMq5MCNWMHW3mBsBrqx/Oba+XGvDu0t/5+SWwBg== dependencies: - "@sentry/types" "7.110.0" + "@sentry/types" "7.111.0" "@sentry/vue@^7.102.1": - version "7.110.0" - resolved "https://registry.yarnpkg.com/@sentry/vue/-/vue-7.110.0.tgz#60bca341bf55c0ebe3bbd5f220241f5e34adbb8b" - integrity sha512-N8qAAPNJMV9fRMfvbRIWgFrn+wNH6ABGdc7fbFg1y3y0rOw58YMMg0+WdHMGEeWhH7N2/cCJGUHdz4egqaM3gQ== + version "7.111.0" + resolved "https://registry.yarnpkg.com/@sentry/vue/-/vue-7.111.0.tgz#064e1523fc97a81e0a62fc9c40bd905e975fb4f0" + integrity sha512-MEvv+1r7548rMuZF3WbxY2OYxHyjuROMTptYR2xrQj+jEkJ1hFbZyn5J+uH/9OamGY2rksnMqxFBcnfdqrItvA== dependencies: - "@sentry/browser" "7.110.0" - "@sentry/core" "7.110.0" - "@sentry/types" "7.110.0" - "@sentry/utils" "7.110.0" + "@sentry/browser" "7.111.0" + "@sentry/core" "7.111.0" + "@sentry/types" "7.111.0" + "@sentry/utils" "7.111.0" "@sideway/address@^4.1.5": version "4.1.5" @@ -1336,9 +1336,9 @@ "@types/estree" "*" "@types/eslint@*": - version "8.56.9" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.9.tgz#403e9ced04a34e63f1c383c5b8ee1a94442c8cc4" - integrity sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg== + version "8.56.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d" + integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -1436,9 +1436,9 @@ integrity sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw== "@types/qs@*": - version "6.9.14" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.14.tgz#169e142bfe493895287bee382af6039795e9b75b" - integrity sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA== + version "6.9.15" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" + integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== "@types/range-parser@*": version "1.2.7" @@ -1816,24 +1816,24 @@ semver "^7.3.4" strip-ansi "^6.0.0" -"@vue/compiler-core@3.4.21": - version "3.4.21" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.21.tgz#868b7085378fc24e58c9aed14c8d62110a62be1a" - integrity sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og== +"@vue/compiler-core@3.4.23": + version "3.4.23" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.23.tgz#a08f5998e391ad75e602a66dd7255af9054df2f3" + integrity sha512-HAFmuVEwNqNdmk+w4VCQ2pkLk1Vw4XYiiyxEp3z/xvl14aLTUBw2OfVH3vBcx+FtGsynQLkkhK410Nah1N2yyQ== dependencies: - "@babel/parser" "^7.23.9" - "@vue/shared" "3.4.21" + "@babel/parser" "^7.24.1" + "@vue/shared" "3.4.23" entities "^4.5.0" estree-walker "^2.0.2" - source-map-js "^1.0.2" + source-map-js "^1.2.0" -"@vue/compiler-dom@3.4.21": - version "3.4.21" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz#0077c355e2008207283a5a87d510330d22546803" - integrity sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA== +"@vue/compiler-dom@3.4.23": + version "3.4.23" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.23.tgz#6fa622d1e5c8508551564c5dc5948e9cddf60867" + integrity sha512-t0b9WSTnCRrzsBGrDd1LNR5HGzYTr7LX3z6nNBG+KGvZLqrT0mY6NsMzOqlVMBKKXKVuusbbB5aOOFgTY+senw== dependencies: - "@vue/compiler-core" "3.4.21" - "@vue/shared" "3.4.21" + "@vue/compiler-core" "3.4.23" + "@vue/shared" "3.4.23" "@vue/compiler-sfc@2.7.16": version "2.7.16" @@ -1847,27 +1847,27 @@ prettier "^1.18.2 || ^2.0.0" "@vue/compiler-sfc@^3.4.15": - version "3.4.21" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz#4af920dc31ab99e1ff5d152b5fe0ad12181145b2" - integrity sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ== + version "3.4.23" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.23.tgz#7041517b9bbd1b304f0db33bfa424e9a899fda8d" + integrity sha512-fSDTKTfzaRX1kNAUiaj8JB4AokikzStWgHooMhaxyjZerw624L+IAP/fvI4ZwMpwIh8f08PVzEnu4rg8/Npssw== dependencies: - "@babel/parser" "^7.23.9" - "@vue/compiler-core" "3.4.21" - "@vue/compiler-dom" "3.4.21" - "@vue/compiler-ssr" "3.4.21" - "@vue/shared" "3.4.21" + "@babel/parser" "^7.24.1" + "@vue/compiler-core" "3.4.23" + "@vue/compiler-dom" "3.4.23" + "@vue/compiler-ssr" "3.4.23" + "@vue/shared" "3.4.23" estree-walker "^2.0.2" - magic-string "^0.30.7" - postcss "^8.4.35" - source-map-js "^1.0.2" + magic-string "^0.30.8" + postcss "^8.4.38" + source-map-js "^1.2.0" -"@vue/compiler-ssr@3.4.21": - version "3.4.21" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz#b84ae64fb9c265df21fc67f7624587673d324fef" - integrity sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q== +"@vue/compiler-ssr@3.4.23": + version "3.4.23" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.23.tgz#1ae4afe962a9e156b1a79eff909c37cd423dd4c2" + integrity sha512-hb6Uj2cYs+tfqz71Wj6h3E5t6OKvb4MVcM2Nl5i/z1nv1gjEhw+zYaNOV+Xwn+SSN/VZM0DgANw5TuJfxfezPg== dependencies: - "@vue/compiler-dom" "3.4.21" - "@vue/shared" "3.4.21" + "@vue/compiler-dom" "3.4.23" + "@vue/shared" "3.4.23" "@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.1.2": version "3.3.0" @@ -1901,10 +1901,10 @@ resolved "https://registry.yarnpkg.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz#ceb924b4ecb3b9c43871c7a429a02f8423e621ab" integrity sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ== -"@vue/shared@3.4.21": - version "3.4.21" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.21.tgz#de526a9059d0a599f0b429af7037cd0c3ed7d5a1" - integrity sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g== +"@vue/shared@3.4.23": + version "3.4.23" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.23.tgz#e536a6dfd2f5f950d08c2e8ebcfe7e5329a851a1" + integrity sha512-wBQ0gvf+SMwsCQOyusNw/GoXPV47WGd1xB5A1Pgzy0sQ3Bi5r5xm3n+92y3gCnB3MWqnRDdvfkRGxhKtbBRNgg== "@vue/web-component-wrapper@^1.2.0": version "1.3.0" @@ -2712,6 +2712,13 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" +basic-auth@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== + dependencies: + safe-buffer "5.1.2" + batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" @@ -3121,9 +3128,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001587: - version "1.0.30001609" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001609.tgz#fc34fad75c0c6d6d6303bdbceec2da8f203dabd6" - integrity sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA== + version "1.0.30001612" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz#d34248b4ec1f117b70b24ad9ee04c90e0b8a14ae" + integrity sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g== case-sensitive-paths-webpack-plugin@^2.3.0: version "2.4.0" @@ -3576,9 +3583,9 @@ copy-webpack-plugin@^5.1.1: webpack-log "^2.0.0" core-js-compat@^3.31.0, core-js-compat@^3.36.1, core-js-compat@^3.6.5: - version "3.36.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.1.tgz#1818695d72c99c25d621dca94e6883e190cea3c8" - integrity sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA== + version "3.37.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.0.tgz#d9570e544163779bb4dff1031c7972f44918dc73" + integrity sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA== dependencies: browserslist "^4.23.0" @@ -3588,9 +3595,9 @@ core-js@^2.4.0: integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.6.5: - version "3.36.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.36.1.tgz#c97a7160ebd00b2de19e62f4bbd3406ab720e578" - integrity sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA== + version "3.37.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.0.tgz#d8dde58e91d156b2547c19d8a4efd5c7f6c426bb" + integrity sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug== core-util-is@1.0.2: version "1.0.2" @@ -4265,9 +4272,9 @@ ejs@^2.6.1: integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== electron-to-chromium@^1.4.668: - version "1.4.736" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.736.tgz#ecb4348f4d5c70fb1e31c347e5bad6b751066416" - integrity sha512-Rer6wc3ynLelKNM4lOCg7/zPQj8tPOCB2hzD32PX9wd3hgRRi9MxEbmkFCokzcEhRVMiOVLjnL9ig9cefJ+6+Q== + version "1.4.745" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.745.tgz#9c202ce9cbf18a5b5e0ca47145fd127cc4dd2290" + integrity sha512-tRbzkaRI5gbUn5DEvF0dV4TQbMZ5CLkWeTAXmpC9IrYT+GE+x76i9p+o3RJ5l9XmdQlI1pPhVtE9uNcJJ0G0EA== elliptic@^6.5.3, elliptic@^6.5.5: version "6.5.5" @@ -4810,6 +4817,13 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +express-basic-auth@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/express-basic-auth/-/express-basic-auth-1.2.1.tgz#d31241c03a915dd55db7e5285573049cfcc36381" + integrity sha512-L6YQ1wQ/mNjVLAmK3AG1RK6VkokA1BIY6wmiH304Xtt/cLTps40EusZsU1Uop+v9lTDPxdtzbFmdXfFO3KEnwA== + dependencies: + basic-auth "^2.0.1" + express@^4.16.3, express@^4.17.1, express@^4.17.2: version "4.19.2" resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" @@ -6789,10 +6803,10 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -magic-string@^0.30.7: - version "0.30.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.9.tgz#8927ae21bfdd856310e07a1bc8dd5e73cb6c251d" - integrity sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw== +magic-string@^0.30.8: + version "0.30.10" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e" + integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" @@ -8231,7 +8245,7 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.27, postcss@^7.0.3 picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.4.14, postcss@^8.4.35: +postcss@^8.4.14, postcss@^8.4.38: version "8.4.38" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== @@ -9208,7 +9222,7 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.0: +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==