From b389f078a5852588f9c1a5db37c6f215bdca4285 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sat, 3 Apr 2021 01:07:00 +1100 Subject: [PATCH 01/16] Added docker publishing --- package.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 14df8cd..c44388e 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,10 @@ "scripts": { "start": "node server/server.js", "dev": "npm run watch:server", - "watch:server": "nodemon . --ext js,jsx,json --ignore 'node_modules/*'" + "watch:server": "nodemon . --ext js,jsx,json --ignore 'node_modules/*'", + "docker": "npm run docker:build && npm run docker:push", + "docker:build": "docker build . --platform amd64 --platform arm --tag docker.krgamestudios.com/krgamestudios/02-auth:latest", + "docker:push": "docker push docker.krgamestudios.com/krgamestudios/02-auth:latest" }, "repository": { "type": "git", From cd7bcd9d11b1083db53e331b562aa0f1452c7333 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sat, 3 Apr 2021 01:42:30 +1100 Subject: [PATCH 02/16] Working on multiplatform things --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c44388e..dd0788e 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "dev": "npm run watch:server", "watch:server": "nodemon . --ext js,jsx,json --ignore 'node_modules/*'", "docker": "npm run docker:build && npm run docker:push", - "docker:build": "docker build . --platform amd64 --platform arm --tag docker.krgamestudios.com/krgamestudios/02-auth:latest", + "docker:build": "docker buildx build . --platform amd64 --tag docker.krgamestudios.com/krgamestudios/02-auth:latest", "docker:push": "docker push docker.krgamestudios.com/krgamestudios/02-auth:latest" }, "repository": { From 5a83f433b6a500e1228f1b80e212503920f37747 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sat, 3 Apr 2021 01:59:16 +1100 Subject: [PATCH 03/16] Formatting errors --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index dd0788e..2eb26dc 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,9 @@ "start": "node server/server.js", "dev": "npm run watch:server", "watch:server": "nodemon . --ext js,jsx,json --ignore 'node_modules/*'", - "docker": "npm run docker:build && npm run docker:push", - "docker:build": "docker buildx build . --platform amd64 --tag docker.krgamestudios.com/krgamestudios/02-auth:latest", - "docker:push": "docker push docker.krgamestudios.com/krgamestudios/02-auth:latest" + "docker": "npm run docker:build && npm run docker:push", + "docker:build": "docker buildx build . --platform amd64 --tag docker.krgamestudios.com/krgamestudios/02-auth:latest", + "docker:push": "docker push docker.krgamestudios.com/krgamestudios/02-auth:latest" }, "repository": { "type": "git", From 646a0293a5bbea3453fde828aac532f5a511d68e Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sat, 3 Apr 2021 02:11:14 +1100 Subject: [PATCH 04/16] Tweaked Dockerfile --- Dockerfile | 3 +-- configure-script.js | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 19950fb..a0a55ee 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,9 +2,8 @@ FROM node:15 WORKDIR "/app" COPY package*.json ./ -RUN npm install --production COPY . /app EXPOSE 3200 USER node ENTRYPOINT ["bash", "-c"] -CMD ["sleep 10 && npm start"] +CMD ["npm install --production && sleep 10 && npm start"] diff --git a/configure-script.js b/configure-script.js index d06c014..6959ef7 100644 --- a/configure-script.js +++ b/configure-script.js @@ -129,12 +129,11 @@ networks: FROM node:15 WORKDIR "/app" COPY package*.json ./ -RUN npm install --production COPY . /app EXPOSE ${appPort} USER node ENTRYPOINT ["bash", "-c"] -CMD ["sleep 10 && npm start"] +CMD ["npm install --production && sleep 10 && npm start"] `; const sqlfile = ` From e34bcb2aa80d4761c06fdaa9ab575608121f3874 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sat, 3 Apr 2021 02:34:51 +1100 Subject: [PATCH 05/16] Tweaked Dockerfile --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index a0a55ee..1a913fe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,8 @@ FROM node:15 WORKDIR "/app" COPY package*.json ./ COPY . /app +RUN "npm install --production" EXPOSE 3200 USER node ENTRYPOINT ["bash", "-c"] -CMD ["npm install --production && sleep 10 && npm start"] +CMD ["sleep 10 && npm start"] From 93c8c0f8711cef083cd105f7c58b8fa80003d8a5 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sat, 3 Apr 2021 03:26:48 +1100 Subject: [PATCH 06/16] Funky config stuff gives me a headache --- Dockerfile | 2 +- configure-script.js | 5 +++-- package.json | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1a913fe..cd0c90e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ FROM node:15 WORKDIR "/app" COPY package*.json ./ COPY . /app -RUN "npm install --production" +RUN npm install --production EXPOSE 3200 USER node ENTRYPOINT ["bash", "-c"] diff --git a/configure-script.js b/configure-script.js index 6959ef7..2f5ba25 100644 --- a/configure-script.js +++ b/configure-script.js @@ -125,15 +125,16 @@ networks: driver: bridge `; - const dockerfile = ` +const dockerfile = ` FROM node:15 WORKDIR "/app" COPY package*.json ./ COPY . /app +RUN npm install --production EXPOSE ${appPort} USER node ENTRYPOINT ["bash", "-c"] -CMD ["npm install --production && sleep 10 && npm start"] +CMD ["sleep 10 && npm start"] `; const sqlfile = ` diff --git a/package.json b/package.json index 2eb26dc..9451ae6 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "dev": "npm run watch:server", "watch:server": "nodemon . --ext js,jsx,json --ignore 'node_modules/*'", "docker": "npm run docker:build && npm run docker:push", - "docker:build": "docker buildx build . --platform amd64 --tag docker.krgamestudios.com/krgamestudios/02-auth:latest", + "docker:build": "docker buildx build . --platform linux/amd64 --tag docker.krgamestudios.com/krgamestudios/02-auth:latest", "docker:push": "docker push docker.krgamestudios.com/krgamestudios/02-auth:latest" }, "repository": { From 5510bc3f013ac80f8ce08ce72fac60a029951be3 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Wed, 7 Apr 2021 02:00:17 +1000 Subject: [PATCH 07/16] Ripped out unneeded stuff --- .github/workflows/docker.yml | 39 --------- LICENSE | 11 --- configure-script.js | 152 ----------------------------------- package-lock.json | 2 +- package.json | 1 - server/server.js | 3 +- test/debug-startup.sql | 4 - test/dev-auth-requests.rest | 68 ---------------- test/requests.rest | 68 ---------------- 9 files changed, 2 insertions(+), 346 deletions(-) delete mode 100644 .github/workflows/docker.yml delete mode 100644 LICENSE delete mode 100644 configure-script.js delete mode 100644 test/debug-startup.sql delete mode 100644 test/dev-auth-requests.rest delete mode 100644 test/requests.rest diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml deleted file mode 100644 index 1164b45..0000000 --- a/.github/workflows/docker.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Publish Docker image -on: - release: - types: [ published ] - push: - tags: - - v1.* -jobs: - push_to_registry: - name: Push Docker Image to Docker Hub - runs-on: ubuntu-latest - steps: - - name: Check Out The Repo - uses: actions/checkout@v2 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - - name: Get Smart Tag - id: prepare - uses: Surgo/docker-smart-tag-action@v1 - with: - docker_image: krgamestudios/auth-server - - - name: Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Push to Docker Hub - uses: docker/build-push-action@v2 - with: - push: true - tags: ${{ steps.prepare.outputs.tag }} - platforms: amd64,arm diff --git a/LICENSE b/LICENSE deleted file mode 100644 index be733db..0000000 --- a/LICENSE +++ /dev/null @@ -1,11 +0,0 @@ -Copyright (c) 2021 Kayne Ruse, KR Game Studios - -This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source distribution. diff --git a/configure-script.js b/configure-script.js deleted file mode 100644 index 2f5ba25..0000000 --- a/configure-script.js +++ /dev/null @@ -1,152 +0,0 @@ -//setup -const readline = require('readline'); -const fs = require('fs'); -const crypto = require("crypto"); - -const uuid = (bytes = 16) => crypto.randomBytes(bytes).toString("hex"); - -const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, - terminal: false -}); - -//manually promisify this (util didn't work) -const question = (prompt, def = null) => { - return new Promise((resolve, reject) => { - rl.question(`${prompt}${def ? ` (${def})` : ''}: `, answer => { - //loop on required - if (def === null && !answer) { - return resolve(question(prompt, def)); - } - - return resolve(answer || def); - }); - }); -}; - -//questions -(async () => { - //project configuration - const appName = await question('App Name', 'auth'); - const appWebAddress = await question('Web Addr', `${appName}.example.com`); - const appPort = await question('App Port', '3200'); - - const appDBUser = await question('DB User', appName); - const appDBPass = await question('DB Pass', uuid()); - const dbRootPass = await question('DB Root Pass'); - - const appMailSMTP = await question('Mail SMTP', 'smtp.example.com'); - const appMailUser = await question('Mail User', 'example@example.com'); - const appMailPass = await question('Mail Pass'); - const appMailPhysical = await question('Mail Physical'); - - const appDefaultUser = await question('App Default User', ''); - const appDefaultPass = await question('App Default Pass', ''); - - const appSecretAccess = await question('Access Token Secret', uuid(32)); - const appSecretRefresh = await question('Refresh Token Secret', uuid(32)); - - const supportEmail = await question('Support Email', appMailUser); - - //generate the files - const ymlfile = ` -version: '3' - -services: - ${appName}: - build: - context: . - ports: - - "${appPort}" - labels: - - "traefik.enable=true" - - "traefik.http.routers.${appName}router.rule=Host(\`${appWebAddress}\`)" - - "traefik.http.routers.${appName}router.entrypoints=websecure" - - "traefik.http.routers.${appName}router.tls.certresolver=myresolver" - - "traefik.http.routers.${appName}router.service=${appName}service@docker" - - "traefik.http.services.${appName}service.loadbalancer.server.port=${appPort}" - environment: - - WEB_PROTOCOL=https - - WEB_ADDRESS=${appWebAddress} - - WEB_PORT=${appPort} - - DB_HOSTNAME=database - - DB_DATABASE=${appName} - - DB_USERNAME=${appDBUser} - - DB_PASSWORD=${appDBPass} - - DB_TIMEZONE=Australia/Sydney - - MAIL_SMTP=${appMailSMTP} - - MAIL_USERNAME=${appMailUser} - - MAIL_PASSWORD=${appMailPass} - - MAIL_PHYSICAL=${appMailPhysical} - - ADMIN_DEFAULT_USERNAME=${appDefaultUser} - - ADMIN_DEFAULT_PASSWORD=${appDefaultPass} - - SECRET_ACCESS=${appSecretAccess} - - SECRET_REFRESH=${appSecretRefresh} - networks: - - app-network - depends_on: - - database - database: - image: mariadb:latest - environment: - MYSQL_DATABASE: ${appName} - MYSQL_USER: ${appDBUser} - MYSQL_PASSWORD: ${appDBPass} - MYSQL_ROOT_PASSWORD: ${dbRootPass} - networks: - - app-network - volumes: - - ./mysql:/var/lib/mysql - - ./startup.sql:/docker-entrypoint-initdb.d/startup.sql:ro - traefik_${appName}: - container_name: ${appName}_traefik - image: "traefik:v2.4" - container_name: "traefik" - command: - - "--log.level=ERROR" - - "--api.insecure=false" - - "--providers.docker=true" - - "--providers.docker.exposedbydefault=false" - - "--entrypoints.websecure.address=:443" - - "--certificatesresolvers.myresolver.acme.tlschallenge=true" - - "--certificatesresolvers.myresolver.acme.email=${supportEmail}" - - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json" - ports: - - "80:80" - - "443:443" - volumes: - - "./letsencrypt:/letsencrypt" - - "/var/run/docker.sock:/var/run/docker.sock:ro" - networks: - - app-network -networks: - app-network: - driver: bridge -`; - -const dockerfile = ` -FROM node:15 -WORKDIR "/app" -COPY package*.json ./ -COPY . /app -RUN npm install --production -EXPOSE ${appPort} -USER node -ENTRYPOINT ["bash", "-c"] -CMD ["sleep 10 && npm start"] -`; - - const sqlfile = ` -CREATE DATABASE IF NOT EXISTS ${appName}; -CREATE USER IF NOT EXISTS '${appDBUser}'@'%' IDENTIFIED BY '${appDBPass}'; -GRANT ALL PRIVILEGES ON ${appName}.* TO '${appDBUser}'@'%'; -`; - - fs.writeFileSync('docker-compose.yml', ymlfile); - fs.writeFileSync('Dockerfile', dockerfile); - fs.writeFileSync('startup.sql', sqlfile); -})() - .then(() => rl.close()) - .catch(e => console.error(e)) -; diff --git a/package-lock.json b/package-lock.json index 3eca186..d3ac35b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,11 +5,11 @@ "requires": true, "packages": { "": { + "name": "auth-server", "version": "1.0.0", "license": "ISC", "dependencies": { "bcryptjs": "^2.4.3", - "body-parser": "^1.19.0", "cors": "^2.8.5", "dotenv": "^8.2.0", "express": "^4.17.1", diff --git a/package.json b/package.json index 9451ae6..bd26122 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,6 @@ "homepage": "https://github.com/krgamestudios/auth-server#readme", "dependencies": { "bcryptjs": "^2.4.3", - "body-parser": "^1.19.0", "cors": "^2.8.5", "dotenv": "^8.2.0", "express": "^4.17.1", diff --git a/server/server.js b/server/server.js index fbd5186..254b9f7 100644 --- a/server/server.js +++ b/server/server.js @@ -5,11 +5,10 @@ require('dotenv').config(); const express = require('express'); const app = express(); const server = require('http').Server(app); -const bodyParser = require('body-parser'); const cors = require('cors'); //config -app.use(bodyParser.json()); +app.use(express.json()); app.use(cors()); //database connection diff --git a/test/debug-startup.sql b/test/debug-startup.sql deleted file mode 100644 index f4624fa..0000000 --- a/test/debug-startup.sql +++ /dev/null @@ -1,4 +0,0 @@ -#use this while debugging -CREATE DATABASE IF NOT EXISTS auth; -CREATE USER IF NOT EXISTS 'auth'@'%' IDENTIFIED BY 'venusaur'; -GRANT ALL PRIVILEGES ON auth.* TO 'auth'@'%'; diff --git a/test/dev-auth-requests.rest b/test/dev-auth-requests.rest deleted file mode 100644 index 5b6d17e..0000000 --- a/test/dev-auth-requests.rest +++ /dev/null @@ -1,68 +0,0 @@ -#Signup -POST https://dev-auth.eggtrainer.com/auth/signup HTTP/1.1 -Content-Type: application/json - -{ - "email": "kayneruse@gmail.com", - "username": "Ratstail91", - "password": "helloworld" -} - -### - -#Login -POST https://dev-auth.eggtrainer.com/auth/login HTTP/1.1 -Content-Type: application/json - -{ - "email": "kayneruse@gmail.com", - "password": "helloworld" -} - -### - -#Query data -GET https://dev-auth.eggtrainer.com/auth/account HTTP/1.1 -Authorization: Bearer - -### - -#Logout -DELETE https://dev-auth.eggtrainer.com/auth/logout HTTP/1.1 -Authorization: Bearer - -{ - "token": "" -} - -### - -#Refresh -POST https://dev-auth.eggtrainer.com/auth/token HTTP/1.1 -Content-Type: application/json - -{ - "token": "" -} - -### - -#Update account data -PATCH https://dev-auth.eggtrainer.com/auth/update HTTP/1.1 -Content-Type: application/json -Authorization: Bearer - -{ - "contact": "true" -} - -### - -#Delete account -DELETE https://dev-auth.eggtrainer.com/auth/deletion HTTP/1.1 -Authorization: Bearer -Content-Type: application/json - -{ - "password": "helloworld" -} diff --git a/test/requests.rest b/test/requests.rest deleted file mode 100644 index f8076e8..0000000 --- a/test/requests.rest +++ /dev/null @@ -1,68 +0,0 @@ -#Signup -POST http://127.0.0.1:3200/auth/signup HTTP/1.1 -Content-Type: application/json - -{ - "email": "kayneruse@gmail.com", - "username": "Ratstail91", - "password": "helloworld" -} - -### - -#Login -POST http://127.0.0.1:3200/auth/login HTTP/1.1 -Content-Type: application/json - -{ - "email": "kayneruse@gmail.com", - "password": "helloworld" -} - -### - -#Query data -GET http://127.0.0.1:3200/auth/account HTTP/1.1 -Authorization: Bearer - -### - -#Logout -DELETE http://127.0.0.1:3200/auth/logout HTTP/1.1 -Authorization: Bearer - -{ - "token": "" -} - -### - -#Refresh -POST http://127.0.0.1:3200/auth/token HTTP/1.1 -Content-Type: application/json - -{ - "token": "" -} - -### - -#Update account data -PATCH http://127.0.0.1:3200/auth/update HTTP/1.1 -Content-Type: application/json -Authorization: Bearer - -{ - "contact": "true" -} - -### - -#Delete account -DELETE http://127.0.0.1:3200/auth/deletion HTTP/1.1 -Authorization: Bearer -Content-Type: application/json - -{ - "password": "helloworld" -} From 01d7b6766590d323f67dea7813652f66509f66ad Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Wed, 7 Apr 2021 02:44:49 +1000 Subject: [PATCH 08/16] Changed default admin account web address --- .envdev | 2 +- server/admin/default-account.js | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.envdev b/.envdev index 1d1be26..dc6fe19 100644 --- a/.envdev +++ b/.envdev @@ -5,7 +5,7 @@ WEB_PORT=3200 DB_HOSTNAME=database DB_DATABASE=auth DB_USERNAME=auth -DB_PASSWORD=venusaur +DB_PASSWORD=charizard MAIL_SMTP=smtp.example.com MAIL_USERNAME=foobar@example.com diff --git a/server/admin/default-account.js b/server/admin/default-account.js index 47ad0ee..b9398eb 100644 --- a/server/admin/default-account.js +++ b/server/admin/default-account.js @@ -25,8 +25,9 @@ module.exports = async () => { }); if (adminRecord == null) { + const webAddress = process.env.WEB_ADDRESS == 'localhost' ? 'example.com' : process.env.WEB_ADDRESS; //can't log in as "localhost" await accounts.create({ - email: `${process.env.ADMIN_DEFAULT_USERNAME}@${process.env.WEB_ADDRESS}`, + email: `${process.env.ADMIN_DEFAULT_USERNAME}@${webAddress}`, username: `${process.env.ADMIN_DEFAULT_USERNAME}`, hash: await bcrypt.hash(`${process.env.ADMIN_DEFAULT_PASSWORD}`, await bcrypt.genSalt(11)), type: 'normal', @@ -34,6 +35,6 @@ module.exports = async () => { mod: true }); - console.warn(`Created default admin account (email: ${process.env.ADMIN_DEFAULT_USERNAME}@${process.env.WEB_ADDRESS}; password: ${process.env.ADMIN_DEFAULT_PASSWORD})`); + console.warn(`Created default admin account (email: ${process.env.ADMIN_DEFAULT_USERNAME}@${webAddress}; password: ${process.env.ADMIN_DEFAULT_PASSWORD})`); } }; From 11c2da6d7a9152b6101bc6bc311661eb33f336c2 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sat, 10 Apr 2021 04:59:13 +1000 Subject: [PATCH 09/16] Tweaked package.json --- package.json | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index bd26122..f3b0eab 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "auth-server", + "name": "02-auth", "version": "1.0.0", "description": "An API centric auth server. Uses Sequelize and mariaDB by default.", "main": "server/server.js", @@ -13,14 +13,10 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/krgamestudios/auth-server.git" + "url": "https://gitea.krgamestudios.com/krgamestudios/02-auth.git" }, "author": "Kayne Ruse", "license": "ISC", - "bugs": { - "url": "https://github.com/krgamestudios/auth-server/issues" - }, - "homepage": "https://github.com/krgamestudios/auth-server#readme", "dependencies": { "bcryptjs": "^2.4.3", "cors": "^2.8.5", From b0444e1517a809296d30523c31cae0e14bba9793 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Fri, 16 Apr 2021 13:24:15 +1000 Subject: [PATCH 10/16] Added .dockerignore --- .dockerignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..c82437f --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +.git + +tools \ No newline at end of file From 0ab5234b5bf2cddce6795e204350e10b90345fa2 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Fri, 16 Apr 2021 16:25:14 +1000 Subject: [PATCH 11/16] Updated .dockerignore --- .dockerignore | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.dockerignore b/.dockerignore index c82437f..8d8dcf6 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,3 +1,5 @@ -.git +.git* -tools \ No newline at end of file +tools* +mysql* +letsencrypt* From 8ffa64a71d4abf0598a368b8ee5f67ae98ce1765 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Tue, 20 Apr 2021 18:50:12 +1000 Subject: [PATCH 12/16] Updated modules --- package-lock.json | 80 +++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 41 deletions(-) diff --git a/package-lock.json b/package-lock.json index d3ac35b..42cce33 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,10 @@ { - "name": "auth-server", + "name": "02-auth", "version": "1.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "auth-server", "version": "1.0.0", "license": "ISC", "dependencies": { @@ -50,9 +49,9 @@ "integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==" }, "node_modules/@types/node": { - "version": "14.14.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz", - "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==" + "version": "14.14.41", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.41.tgz", + "integrity": "sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g==" }, "node_modules/abbrev": { "version": "1.1.1", @@ -161,9 +160,9 @@ "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" }, "node_modules/anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", @@ -179,9 +178,9 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "node_modules/bcryptjs": { @@ -368,7 +367,6 @@ "dependencies": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", @@ -1255,19 +1253,19 @@ } }, "node_modules/mime-db": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", - "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.29", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", - "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", "dependencies": { - "mime-db": "1.46.0" + "mime-db": "1.47.0" }, "engines": { "node": ">= 0.6" @@ -1510,9 +1508,9 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", "dev": true, "engines": { "node": ">=8.6" @@ -2182,9 +2180,9 @@ "integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==" }, "@types/node": { - "version": "14.14.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz", - "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==" + "version": "14.14.41", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.41.tgz", + "integrity": "sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g==" }, "abbrev": { "version": "1.1.1", @@ -2271,9 +2269,9 @@ "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" }, "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -2286,9 +2284,9 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "bcryptjs": { @@ -3136,16 +3134,16 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", - "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==" + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==" }, "mime-types": { - "version": "2.1.29", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", - "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", "requires": { - "mime-db": "1.46.0" + "mime-db": "1.47.0" } }, "mimic-response": { @@ -3326,9 +3324,9 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", "dev": true }, "please-upgrade-node": { From e141583f91dbed2cfad306cd6c603291ac5301c7 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Fri, 23 Apr 2021 21:20:02 +1000 Subject: [PATCH 13/16] Renaming database primary key --- server/auth/account-delete.js | 4 ++-- server/auth/account-query.js | 2 +- server/auth/account-update.js | 2 +- server/auth/login.js | 4 ++-- server/database/models/accounts.js | 2 +- server/database/models/tokens.js | 2 +- server/utilities/token-generate.js | 4 ++-- server/utilities/token-refresh.js | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/server/auth/account-delete.js b/server/auth/account-delete.js index 239936b..6e7b782 100644 --- a/server/auth/account-delete.js +++ b/server/auth/account-delete.js @@ -11,7 +11,7 @@ const { accounts } = require('../database/models'); const route = async (req, res) => { const account = await accounts.findOne({ where: { - id: req.user.id + index: req.user.index } }); @@ -30,7 +30,7 @@ const route = async (req, res) => { }, { where: { - id: req.user.id + index: req.user.index } }); diff --git a/server/auth/account-query.js b/server/auth/account-query.js index 91bbed2..9350da7 100644 --- a/server/auth/account-query.js +++ b/server/auth/account-query.js @@ -4,7 +4,7 @@ const { accounts } = require('../database/models'); const route = async (req, res) => { const account = await accounts.findOne({ where: { - id: req.user.id + index: req.user.index } }); diff --git a/server/auth/account-update.js b/server/auth/account-update.js index 64acab1..74a7476 100644 --- a/server/auth/account-update.js +++ b/server/auth/account-update.js @@ -16,7 +16,7 @@ const route = async (req, res) => { hash: hash }, { where: { - id: req.user.id + index: req.user.index } }); diff --git a/server/auth/login.js b/server/auth/login.js index 8140da0..061a8b2 100644 --- a/server/auth/login.js +++ b/server/auth/login.js @@ -38,7 +38,7 @@ const route = async (req, res) => { //cancel deletion if any await accounts.update({ deletion: null }, { where: { - id: account.id + index: account.index } }); @@ -48,7 +48,7 @@ const route = async (req, res) => { } //generate the JWT - const tokens = generate(account.id, account.username, account.type, account.admin, account.mod); + const tokens = generate(account.index, account.username, account.type, account.admin, account.mod); //finally res.status(200).json(tokens); diff --git a/server/database/models/accounts.js b/server/database/models/accounts.js index 2bd7625..f034740 100644 --- a/server/database/models/accounts.js +++ b/server/database/models/accounts.js @@ -2,7 +2,7 @@ const Sequelize = require('sequelize'); const sequelize = require('..'); module.exports = sequelize.define('accounts', { - id: { + index: { type: Sequelize.INTEGER(11), allowNull: false, autoIncrement: true, diff --git a/server/database/models/tokens.js b/server/database/models/tokens.js index c7dfb8c..519d9ae 100644 --- a/server/database/models/tokens.js +++ b/server/database/models/tokens.js @@ -3,5 +3,5 @@ const sequelize = require('..'); module.exports = sequelize.define('tokens', { token: 'varchar(320)', - username: 'varchar(320)' + username: 'varchar(320)' //TODO: why username? }); diff --git a/server/utilities/token-generate.js b/server/utilities/token-generate.js index 3f70394..47bfb57 100644 --- a/server/utilities/token-generate.js +++ b/server/utilities/token-generate.js @@ -2,9 +2,9 @@ const jwt = require('jsonwebtoken'); const { tokens } = require('../database/models'); //generates a JWT token based on the given arguments -module.exports = (id, username, type, admin, mod) => { +module.exports = (index, username, type, admin, mod) => { const content = { - id, + index, username, type, admin, diff --git a/server/utilities/token-refresh.js b/server/utilities/token-refresh.js index f8d7b15..9807ca5 100644 --- a/server/utilities/token-refresh.js +++ b/server/utilities/token-refresh.js @@ -24,7 +24,7 @@ module.exports = (token, callback) => { return callback(403); } - const result = generate(user.id, user.username, user.type, user.admin, user.mod); + const result = generate(user.index, user.username, user.type, user.admin, user.mod); destroy(token); From 768352b804a6b523478f0c154d46a0b7acba3728 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Wed, 28 Apr 2021 21:00:48 +1000 Subject: [PATCH 14/16] Hopefully plugged an undefined username hole --- server/admin/ban-user.js | 4 ++-- server/admin/grant-admin.js | 2 +- server/admin/grant-mod.js | 2 +- server/admin/index.js | 2 +- server/admin/remove-admin.js | 2 +- server/admin/remove-mod.js | 2 +- server/auth/index.js | 2 +- server/auth/login.js | 2 +- server/auth/signup.js | 2 +- server/auth/validation.js | 4 ++-- server/utilities/validate-username.js | 4 ++-- 11 files changed, 14 insertions(+), 14 deletions(-) diff --git a/server/admin/ban-user.js b/server/admin/ban-user.js index 1128979..3980c33 100644 --- a/server/admin/ban-user.js +++ b/server/admin/ban-user.js @@ -9,7 +9,7 @@ const route = async (req, res) => { }, { where: { username: { - [Op.eq]: req.body.username + [Op.eq]: req.body.username || '' }, admin: { [Op.not]: true @@ -27,7 +27,7 @@ const route = async (req, res) => { //forcibly logout tokens.destroy({ where: { - username: req.body.username + username: req.body.username || '' } }); diff --git a/server/admin/grant-admin.js b/server/admin/grant-admin.js index a67dc39..5440f1c 100644 --- a/server/admin/grant-admin.js +++ b/server/admin/grant-admin.js @@ -10,7 +10,7 @@ const route = async (req, res) => { }, { where: { username: { - [Op.eq]: req.body.username + [Op.eq]: req.body.username || '' } } }); diff --git a/server/admin/grant-mod.js b/server/admin/grant-mod.js index 85c08ef..785d3ae 100644 --- a/server/admin/grant-mod.js +++ b/server/admin/grant-mod.js @@ -9,7 +9,7 @@ const route = async (req, res) => { }, { where: { username: { - [Op.eq]: req.body.username + [Op.eq]: req.body.username || '' } } }); diff --git a/server/admin/index.js b/server/admin/index.js index 0ca330d..38c6751 100644 --- a/server/admin/index.js +++ b/server/admin/index.js @@ -12,7 +12,7 @@ router.use(tokenAuth); router.use(async (req, res, next) => { const record = await accounts.findOne({ where: { - username: req.user.username + username: req.user.username || '' } }); diff --git a/server/admin/remove-admin.js b/server/admin/remove-admin.js index 8e4c53d..08fd22e 100644 --- a/server/admin/remove-admin.js +++ b/server/admin/remove-admin.js @@ -9,7 +9,7 @@ const route = async (req, res) => { }, { where: { username: { - [Op.eq]: req.body.username + [Op.eq]: req.body.username || '' } } }); diff --git a/server/admin/remove-mod.js b/server/admin/remove-mod.js index bebd220..bcd9814 100644 --- a/server/admin/remove-mod.js +++ b/server/admin/remove-mod.js @@ -10,7 +10,7 @@ const route = async (req, res) => { }, { where: { username: { - [Op.eq]: req.body.username + [Op.eq]: req.body.username || '' } } }); diff --git a/server/auth/index.js b/server/auth/index.js index b0a79c6..fd445a1 100644 --- a/server/auth/index.js +++ b/server/auth/index.js @@ -20,7 +20,7 @@ router.use(tokenAuth); router.use(async (req, res, next) => { const record = await accounts.findOne({ where: { - username: req.user.username + username: req.user.username || '' } }); diff --git a/server/auth/login.js b/server/auth/login.js index 061a8b2..d88fb12 100644 --- a/server/auth/login.js +++ b/server/auth/login.js @@ -19,7 +19,7 @@ const route = async (req, res) => { //get the existing account const account = await accounts.findOne({ where: { - email: req.body.email + email: req.body.email || '' } }); diff --git a/server/auth/signup.js b/server/auth/signup.js index 82bfe31..3779a62 100644 --- a/server/auth/signup.js +++ b/server/auth/signup.js @@ -70,7 +70,7 @@ const validateDetails = async (body) => { //check for existing username const usernameRecord = await accounts.findOne({ where: { - username: body.username + username: body.username || '' } }); diff --git a/server/auth/validation.js b/server/auth/validation.js index 75bf13e..0227d4b 100644 --- a/server/auth/validation.js +++ b/server/auth/validation.js @@ -5,7 +5,7 @@ const route = async (req, res) => { //get the existing pending signup const info = await pendingSignups.findOne({ where: { - username: req.query.username + username: req.query.username || '' } }); @@ -29,7 +29,7 @@ const route = async (req, res) => { //delete the pending signup pendingSignups.destroy({ where: { - username: req.query.username + username: req.query.username || '' } }); diff --git a/server/utilities/validate-username.js b/server/utilities/validate-username.js index 62e8f80..a890006 100644 --- a/server/utilities/validate-username.js +++ b/server/utilities/validate-username.js @@ -6,11 +6,11 @@ module.exports = username => { if (username.length < 8 && username.length > 100) { return false; } - + if (!isAlpha(username)) { return false; } - + return true; } From f724ba0f07c5a966abb177d3015f5798b00c65a1 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Wed, 28 Apr 2021 21:28:49 +1000 Subject: [PATCH 15/16] Updated packages --- package-lock.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 42cce33..6325cb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -49,9 +49,9 @@ "integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==" }, "node_modules/@types/node": { - "version": "14.14.41", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.41.tgz", - "integrity": "sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g==" + "version": "14.14.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.43.tgz", + "integrity": "sha512-3pwDJjp1PWacPTpH0LcfhgjvurQvrZFBrC6xxjaUEZ7ifUtT32jtjPxEMMblpqd2Mvx+k8haqQJLQxolyGN/cQ==" }, "node_modules/abbrev": { "version": "1.1.1", @@ -1344,9 +1344,9 @@ } }, "node_modules/nodemailer": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.5.0.tgz", - "integrity": "sha512-Tm4RPrrIZbnqDKAvX+/4M+zovEReiKlEXWDzG4iwtpL9X34MJY+D5LnQPH/+eghe8DLlAVshHAJZAZWBGhkguw==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.6.0.tgz", + "integrity": "sha512-ikSMDU1nZqpo2WUPE0wTTw/NGGImTkwpJKDIFPZT+YvvR9Sj+ze5wzu95JHkBMglQLoG2ITxU21WukCC/XsFkg==", "engines": { "node": ">=6.0.0" } @@ -2180,9 +2180,9 @@ "integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==" }, "@types/node": { - "version": "14.14.41", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.41.tgz", - "integrity": "sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g==" + "version": "14.14.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.43.tgz", + "integrity": "sha512-3pwDJjp1PWacPTpH0LcfhgjvurQvrZFBrC6xxjaUEZ7ifUtT32jtjPxEMMblpqd2Mvx+k8haqQJLQxolyGN/cQ==" }, "abbrev": { "version": "1.1.1", @@ -3200,9 +3200,9 @@ } }, "nodemailer": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.5.0.tgz", - "integrity": "sha512-Tm4RPrrIZbnqDKAvX+/4M+zovEReiKlEXWDzG4iwtpL9X34MJY+D5LnQPH/+eghe8DLlAVshHAJZAZWBGhkguw==" + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.6.0.tgz", + "integrity": "sha512-ikSMDU1nZqpo2WUPE0wTTw/NGGImTkwpJKDIFPZT+YvvR9Sj+ze5wzu95JHkBMglQLoG2ITxU21WukCC/XsFkg==" }, "nodemon": { "version": "2.0.7", From d4f9cf35a5c3f1ff0a28381ff2c8d6618eb6a01a Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Fri, 23 Jul 2021 19:12:39 +1000 Subject: [PATCH 16/16] Updated .dockerignore --- .dockerignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.dockerignore b/.dockerignore index 8d8dcf6..3b0902b 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,3 +3,5 @@ tools* mysql* letsencrypt* + +.env* \ No newline at end of file