From 4026818aea0cd10b162180a82e887b57d63d759b Mon Sep 17 00:00:00 2001 From: Renna Carver <87547832+rennacarver@users.noreply.github.com> Date: Sun, 12 May 2024 11:31:40 -0700 Subject: [PATCH 01/12] add PORT and database connection string --- config/.env | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/.env b/config/.env index dbe126e0a..99076041f 100644 --- a/config/.env +++ b/config/.env @@ -1,2 +1,2 @@ -PORT = 2121 -DB_STRING = mongodb+srv://demo:demo@cluster0.hcds1.mongodb.net/todos?retryWrites=true&w=majority \ No newline at end of file +PORT=8000 +DB_STRING=mongodb+srv://mayecarver:fMzoZhtH3l3hiXrQ@cluster0.49ftvmg.mongodb.net/todo_mvc_auth_local?retryWrites=true&w=majority&appName=Cluster0 \ No newline at end of file From 0a64a02f3856c1b1e5e10a16d76329e44c229f76 Mon Sep 17 00:00:00 2001 From: Renna Carver <87547832+rennacarver@users.noreply.github.com> Date: Sun, 12 May 2024 11:33:26 -0700 Subject: [PATCH 02/12] add nodemon dependency --- package-lock.json | 238 ++++++++++++++++++++++++---------------------- package.json | 7 +- server.js | 1 + 3 files changed, 129 insertions(+), 117 deletions(-) diff --git a/package-lock.json b/package-lock.json index f5d8debf0..f3d1f1618 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,10 +19,12 @@ "mongodb": "^3.6.5", "mongoose": "^5.12.3", "morgan": "^1.10.0", - "nodemon": "^2.0.7", "passport": "^0.6.0", "passport-local": "^1.0.0", "validator": "^13.6.0" + }, + "devDependencies": { + "nodemon": "^3.1.0" } }, "node_modules/@mapbox/node-pre-gyp": { @@ -58,20 +60,6 @@ "node": ">=6" } }, - "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@types/bson": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.3.tgz", @@ -169,6 +157,7 @@ "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", "picomatch": "^2.0.4" @@ -250,6 +239,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, "engines": { "node": ">=8" } @@ -301,6 +291,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -362,6 +353,7 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, "funding": [ { "type": "individual", @@ -688,6 +680,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -748,6 +741,7 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -799,6 +793,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -810,6 +805,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, "engines": { "node": ">=4" } @@ -881,7 +877,8 @@ "node_modules/ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true }, "node_modules/inflight": { "version": "1.0.6", @@ -909,6 +906,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -920,6 +918,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -936,6 +935,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -947,6 +947,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "engines": { "node": ">=0.12.0" } @@ -978,17 +979,6 @@ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==" }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -1314,18 +1304,18 @@ } }, "node_modules/nodemon": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", - "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", - "hasInstallScript": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.0.tgz", + "integrity": "sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA==", + "dev": true, "dependencies": { "chokidar": "^3.5.2", - "debug": "^3.2.7", + "debug": "^4", "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", "supports-color": "^5.5.0", "touch": "^3.1.0", "undefsafe": "^2.0.5" @@ -1334,7 +1324,7 @@ "nodemon": "bin/nodemon.js" }, "engines": { - "node": ">=8.10.0" + "node": ">=10" }, "funding": { "type": "opencollective", @@ -1342,22 +1332,33 @@ } }, "node_modules/nodemon/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "dependencies": { - "ms": "^2.1.1" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/nodemon/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/nopt": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, "dependencies": { "abbrev": "1" }, @@ -1372,6 +1373,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -1496,6 +1498,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { "node": ">=8.6" }, @@ -1523,7 +1526,8 @@ "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true }, "node_modules/qs": { "version": "6.7.0", @@ -1581,6 +1585,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -1638,11 +1643,14 @@ } }, "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/send": { @@ -1708,22 +1716,15 @@ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "node_modules/simple-update-notifier": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", - "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, "dependencies": { - "semver": "~7.0.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "bin": { - "semver": "bin/semver.js" + "node": ">=10" } }, "node_modules/sliced": { @@ -1784,6 +1785,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -1811,6 +1813,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -1830,6 +1833,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, "dependencies": { "nopt": "~1.0.10" }, @@ -1868,7 +1872,8 @@ "node_modules/undefsafe": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true }, "node_modules/unpipe": { "version": "1.0.0", @@ -1964,14 +1969,6 @@ "requires": { "abbrev": "1" } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } } } }, @@ -2051,6 +2048,7 @@ "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", "picomatch": "^2.0.4" @@ -2117,7 +2115,8 @@ "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true }, "bl": { "version": "2.2.1", @@ -2163,6 +2162,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -2205,6 +2205,7 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, "requires": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -2463,6 +2464,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -2508,6 +2510,7 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, "optional": true }, "gauge": { @@ -2543,6 +2546,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "requires": { "is-glob": "^4.0.1" } @@ -2550,7 +2554,8 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "has-unicode": { "version": "2.0.1", @@ -2604,7 +2609,8 @@ "ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true }, "inflight": { "version": "1.0.6", @@ -2629,6 +2635,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "requires": { "binary-extensions": "^2.0.0" } @@ -2636,7 +2643,8 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true }, "is-fullwidth-code-point": { "version": "3.0.0", @@ -2647,6 +2655,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -2654,7 +2663,8 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "isarray": { "version": "1.0.0", @@ -2677,14 +2687,6 @@ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==" }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -2901,34 +2903,37 @@ } }, "nodemon": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", - "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.0.tgz", + "integrity": "sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA==", + "dev": true, "requires": { "chokidar": "^3.5.2", - "debug": "^3.2.7", + "debug": "^4", "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", "supports-color": "^5.5.0", "touch": "^3.1.0", "undefsafe": "^2.0.5" }, "dependencies": { "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, @@ -2936,6 +2941,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, "requires": { "abbrev": "1" } @@ -2943,7 +2949,8 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true }, "npmlog": { "version": "5.0.1", @@ -3033,7 +3040,8 @@ "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true }, "process-nextick-args": { "version": "2.0.1", @@ -3052,7 +3060,8 @@ "pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true }, "qs": { "version": "6.7.0", @@ -3098,6 +3107,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "requires": { "picomatch": "^2.2.1" } @@ -3140,9 +3150,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==" }, "send": { "version": "0.17.1", @@ -3203,18 +3213,12 @@ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "simple-update-notifier": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", - "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, "requires": { - "semver": "~7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" - } + "semver": "^7.5.3" } }, "sliced": { @@ -3266,6 +3270,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -3287,6 +3292,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "requires": { "is-number": "^7.0.0" } @@ -3300,6 +3306,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, "requires": { "nopt": "~1.0.10" } @@ -3329,7 +3336,8 @@ "undefsafe": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true }, "unpipe": { "version": "1.0.0", diff --git a/package.json b/package.json index 8c294b38a..cd9dcf6af 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "main": "server.js", "scripts": { "start": "nodemon server.js", - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "dev": "nodemon server" }, "author": "", "license": "MIT", @@ -20,9 +21,11 @@ "mongodb": "^3.6.5", "mongoose": "^5.12.3", "morgan": "^1.10.0", - "nodemon": "^2.0.7", "passport": "^0.6.0", "passport-local": "^1.0.0", "validator": "^13.6.0" + }, + "devDependencies": { + "nodemon": "^3.1.0" } } diff --git a/server.js b/server.js index b031c4cad..6d6ef84b5 100644 --- a/server.js +++ b/server.js @@ -22,6 +22,7 @@ app.use(express.static('public')) app.use(express.urlencoded({ extended: true })) app.use(express.json()) app.use(logger('dev')) + // Sessions app.use( session({ From a74a0c20cd4a9c3b3c137d46cbf20ba77fca392e Mon Sep 17 00:00:00 2001 From: Renna Carver <87547832+rennacarver@users.noreply.github.com> Date: Mon, 13 May 2024 22:48:50 -0700 Subject: [PATCH 03/12] update mongoose version, remove deprecated code --- config/.env | 2 +- config/database.js | 4 - controllers/auth.js | 2 + package-lock.json | 466 +++++++++++++++++++++++++------------------- package.json | 2 +- server.js | 2 +- 6 files changed, 271 insertions(+), 207 deletions(-) diff --git a/config/.env b/config/.env index 99076041f..ac2fa6264 100644 --- a/config/.env +++ b/config/.env @@ -1,2 +1,2 @@ PORT=8000 -DB_STRING=mongodb+srv://mayecarver:fMzoZhtH3l3hiXrQ@cluster0.49ftvmg.mongodb.net/todo_mvc_auth_local?retryWrites=true&w=majority&appName=Cluster0 \ No newline at end of file +DB_STRING=mongodb+srv://mayecarver:KjFr1KquaVWqQfSw@cluster0.uwnzbd7.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0 \ No newline at end of file diff --git a/config/database.js b/config/database.js index 4aac3a233..a9f9e04f8 100644 --- a/config/database.js +++ b/config/database.js @@ -3,10 +3,6 @@ const mongoose = require('mongoose') const connectDB = async () => { try { const conn = await mongoose.connect(process.env.DB_STRING, { - useNewUrlParser: true, - useUnifiedTopology: true, - useFindAndModify: false, - useCreateIndex: true }) console.log(`MongoDB Connected: ${conn.connection.host}`) diff --git a/controllers/auth.js b/controllers/auth.js index c434c3c3a..ec7a85dec 100644 --- a/controllers/auth.js +++ b/controllers/auth.js @@ -93,4 +93,6 @@ const User = require('../models/User') }) }) }) + + } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f3d1f1618..1f48dbe35 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "express-flash": "^0.0.2", "express-session": "^1.17.1", "mongodb": "^3.6.5", - "mongoose": "^5.12.3", + "mongoose": "^8.3.4", "morgan": "^1.10.0", "passport": "^0.6.0", "passport-local": "^1.0.0", @@ -60,28 +60,27 @@ "node": ">=6" } }, - "node_modules/@types/bson": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.3.tgz", - "integrity": "sha512-mVRvYnTOZJz3ccpxhr3wgxVmSeiYinW+zlzQz3SXWaJmD1DuL05Jeq7nKw3SnbKmbleW5qrLG5vdyWe/A9sXhw==", + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.7.tgz", + "integrity": "sha512-dCHW/oEX0KJ4NjDULBo3JiOaK5+6axtpBbS+ao2ZInoAL9/YRQLhXzSNAFz7hP4nzLkIqsfYAK/PDE3+XHny0Q==", "dependencies": { - "@types/node": "*" + "sparse-bitfield": "^3.0.3" } }, - "node_modules/@types/mongodb": { - "version": "3.6.12", - "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.12.tgz", - "integrity": "sha512-49aEzQD5VdHPxyd5dRyQdqEveAg9LanwrH8RQipnMuulwzKmODXIZRp0umtxi1eBUfEusRkoy8AVOMr+kVuFog==", + "node_modules/@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" + }, + "node_modules/@types/whatwg-url": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.4.tgz", + "integrity": "sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==", "dependencies": { - "@types/bson": "*", - "@types/node": "*" + "@types/webidl-conversions": "*" } }, - "node_modules/@types/node": { - "version": "14.14.37", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", - "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==" - }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -253,11 +252,6 @@ "safe-buffer": "^5.1.1" } }, - "node_modules/bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" - }, "node_modules/body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", @@ -975,9 +969,12 @@ } }, "node_modules/kareem": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", - "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", + "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==", + "engines": { + "node": ">=12.0.0" + } }, "node_modules/make-dir": { "version": "3.1.0", @@ -1012,8 +1009,7 @@ "node_modules/memory-pager": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==" }, "node_modules/merge-descriptors": { "version": "1.0.1", @@ -1141,6 +1137,46 @@ } } }, + "node_modules/mongodb-connection-string-url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", + "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", + "dependencies": { + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^13.0.0" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/mongodb/node_modules/optional-require": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.8.tgz", @@ -1153,64 +1189,83 @@ } }, "node_modules/mongoose": { - "version": "5.13.15", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.15.tgz", - "integrity": "sha512-cxp1Gbb8yUWkaEbajdhspSaKzAvsIvOtRlYD87GN/P2QEUhpd6bIvebi36T6M0tIVAMauNaK9SPA055N3PwF8Q==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.3.4.tgz", + "integrity": "sha512-ckBaBzKgtWgCalW/LPkcBsR3wKCOYEJ9jLFPmYCYV7TLStpETY757ELx8/1stL11+6HxLLVffawBffXzd0Y7YA==", "dependencies": { - "@types/bson": "1.x || 4.0.x", - "@types/mongodb": "^3.5.27", - "bson": "^1.1.4", - "kareem": "2.3.2", - "mongodb": "3.7.3", - "mongoose-legacy-pluralize": "1.0.2", - "mpath": "0.8.4", - "mquery": "3.2.5", - "ms": "2.1.2", - "optional-require": "1.0.x", - "regexp-clone": "1.0.0", - "safe-buffer": "5.2.1", - "sift": "13.5.2", - "sliced": "1.0.1" + "bson": "^6.5.0", + "kareem": "2.6.3", + "mongodb": "6.5.0", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "17.1.3" }, "engines": { - "node": ">=4.0.0" + "node": ">=16.20.1" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/mongoose" } }, - "node_modules/mongoose-legacy-pluralize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", - "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==", - "peerDependencies": { - "mongoose": "*" + "node_modules/mongoose/node_modules/bson": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.7.0.tgz", + "integrity": "sha512-w2IquM5mYzYZv6rs3uN2DZTOBe2a0zXLj53TGDqwF4l6Sz/XsISrisXOJihArF9+BZ6Cq/GjVht7Sjfmri7ytQ==", + "engines": { + "node": ">=16.20.1" } }, - "node_modules/mongoose/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/mongoose/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" + "node_modules/mongoose/node_modules/mongodb": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.5.0.tgz", + "integrity": "sha512-Fozq68InT+JKABGLqctgtb8P56pRrJFkbhW0ux+x1mdHeyinor8oNzJqwLjV/t5X5nJGfTlluxfyMnOXNggIUA==", + "dependencies": { + "@mongodb-js/saslprep": "^1.1.5", + "bson": "^6.4.0", + "mongodb-connection-string-url": "^3.0.0" + }, + "engines": { + "node": ">=16.20.1" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.1.0", + "gcp-metadata": "^5.2.0", + "kerberos": "^2.0.1", + "mongodb-client-encryption": ">=6.0.0 <7", + "snappy": "^7.2.2", + "socks": "^2.7.1" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "@mongodb-js/zstd": { + "optional": true }, - { - "type": "consulting", - "url": "https://feross.org/support" + "gcp-metadata": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + }, + "socks": { + "optional": true } - ] + } + }, + "node_modules/mongoose/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/morgan": { "version": "1.10.0", @@ -1236,36 +1291,45 @@ } }, "node_modules/mpath": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.4.tgz", - "integrity": "sha512-DTxNZomBcTWlrMW76jy1wvV37X/cNNxPW1y2Jzd4DZkAaC5ZGsm8bfGfNOthcDuRJujXLqiuS6o3Tpy0JEoh7g==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", "engines": { "node": ">=4.0.0" } }, "node_modules/mquery": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.5.tgz", - "integrity": "sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", "dependencies": { - "bluebird": "3.5.1", - "debug": "3.1.0", - "regexp-clone": "^1.0.0", - "safe-buffer": "5.1.2", - "sliced": "1.0.1" + "debug": "4.x" }, "engines": { - "node": ">=4.0.0" + "node": ">=14.0.0" } }, "node_modules/mquery/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "ms": "2.0.0" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, + "node_modules/mquery/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -1424,14 +1488,6 @@ "wrappy": "1" } }, - "node_modules/optional-require": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz", - "integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA==", - "engines": { - "node": ">=4" - } - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -1529,6 +1585,14 @@ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", "dev": true }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" + } + }, "node_modules/qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", @@ -1593,11 +1657,6 @@ "node": ">=8.10.0" } }, - "node_modules/regexp-clone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", - "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" - }, "node_modules/require-at": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", @@ -1706,9 +1765,9 @@ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, "node_modules/sift": { - "version": "13.5.2", - "resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz", - "integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==" + "version": "17.1.3", + "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", + "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==" }, "node_modules/signal-exit": { "version": "3.0.3", @@ -1727,16 +1786,10 @@ "node": ">=10" } }, - "node_modules/sliced": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", - "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" - }, "node_modules/sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", - "optional": true, "dependencies": { "memory-pager": "^1.0.2" } @@ -1972,28 +2025,27 @@ } } }, - "@types/bson": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.3.tgz", - "integrity": "sha512-mVRvYnTOZJz3ccpxhr3wgxVmSeiYinW+zlzQz3SXWaJmD1DuL05Jeq7nKw3SnbKmbleW5qrLG5vdyWe/A9sXhw==", + "@mongodb-js/saslprep": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.7.tgz", + "integrity": "sha512-dCHW/oEX0KJ4NjDULBo3JiOaK5+6axtpBbS+ao2ZInoAL9/YRQLhXzSNAFz7hP4nzLkIqsfYAK/PDE3+XHny0Q==", "requires": { - "@types/node": "*" + "sparse-bitfield": "^3.0.3" } }, - "@types/mongodb": { - "version": "3.6.12", - "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.12.tgz", - "integrity": "sha512-49aEzQD5VdHPxyd5dRyQdqEveAg9LanwrH8RQipnMuulwzKmODXIZRp0umtxi1eBUfEusRkoy8AVOMr+kVuFog==", + "@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" + }, + "@types/whatwg-url": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.4.tgz", + "integrity": "sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==", "requires": { - "@types/bson": "*", - "@types/node": "*" + "@types/webidl-conversions": "*" } }, - "@types/node": { - "version": "14.14.37", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", - "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==" - }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -2127,11 +2179,6 @@ "safe-buffer": "^5.1.1" } }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" - }, "body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", @@ -2683,9 +2730,9 @@ } }, "kareem": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", - "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", + "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==" }, "make-dir": { "version": "3.1.0", @@ -2710,8 +2757,7 @@ "memory-pager": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==" }, "merge-descriptors": { "version": "1.0.1", @@ -2794,44 +2840,74 @@ } } }, - "mongoose": { - "version": "5.13.15", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.15.tgz", - "integrity": "sha512-cxp1Gbb8yUWkaEbajdhspSaKzAvsIvOtRlYD87GN/P2QEUhpd6bIvebi36T6M0tIVAMauNaK9SPA055N3PwF8Q==", + "mongodb-connection-string-url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", + "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", "requires": { - "@types/bson": "1.x || 4.0.x", - "@types/mongodb": "^3.5.27", - "bson": "^1.1.4", - "kareem": "2.3.2", - "mongodb": "3.7.3", - "mongoose-legacy-pluralize": "1.0.2", - "mpath": "0.8.4", - "mquery": "3.2.5", - "ms": "2.1.2", - "optional-require": "1.0.x", - "regexp-clone": "1.0.0", - "safe-buffer": "5.2.1", - "sift": "13.5.2", - "sliced": "1.0.1" + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^13.0.0" }, "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "requires": { + "punycode": "^2.3.0" + } }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + }, + "whatwg-url": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", + "requires": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + } } } }, - "mongoose-legacy-pluralize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", - "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==", - "requires": {} + "mongoose": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.3.4.tgz", + "integrity": "sha512-ckBaBzKgtWgCalW/LPkcBsR3wKCOYEJ9jLFPmYCYV7TLStpETY757ELx8/1stL11+6HxLLVffawBffXzd0Y7YA==", + "requires": { + "bson": "^6.5.0", + "kareem": "2.6.3", + "mongodb": "6.5.0", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "17.1.3" + }, + "dependencies": { + "bson": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.7.0.tgz", + "integrity": "sha512-w2IquM5mYzYZv6rs3uN2DZTOBe2a0zXLj53TGDqwF4l6Sz/XsISrisXOJihArF9+BZ6Cq/GjVht7Sjfmri7ytQ==" + }, + "mongodb": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.5.0.tgz", + "integrity": "sha512-Fozq68InT+JKABGLqctgtb8P56pRrJFkbhW0ux+x1mdHeyinor8oNzJqwLjV/t5X5nJGfTlluxfyMnOXNggIUA==", + "requires": { + "@mongodb-js/saslprep": "^1.1.5", + "bson": "^6.4.0", + "mongodb-connection-string-url": "^3.0.0" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } }, "morgan": { "version": "1.10.0", @@ -2853,29 +2929,30 @@ } }, "mpath": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.4.tgz", - "integrity": "sha512-DTxNZomBcTWlrMW76jy1wvV37X/cNNxPW1y2Jzd4DZkAaC5ZGsm8bfGfNOthcDuRJujXLqiuS6o3Tpy0JEoh7g==" + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==" }, "mquery": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.5.tgz", - "integrity": "sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", "requires": { - "bluebird": "3.5.1", - "debug": "3.1.0", - "regexp-clone": "^1.0.0", - "safe-buffer": "5.1.2", - "sliced": "1.0.1" + "debug": "4.x" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { - "ms": "2.0.0" + "ms": "2.1.2" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -2989,11 +3066,6 @@ "wrappy": "1" } }, - "optional-require": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz", - "integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA==" - }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -3063,6 +3135,11 @@ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", "dev": true }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", @@ -3112,11 +3189,6 @@ "picomatch": "^2.2.1" } }, - "regexp-clone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", - "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" - }, "require-at": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", @@ -3203,9 +3275,9 @@ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, "sift": { - "version": "13.5.2", - "resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz", - "integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==" + "version": "17.1.3", + "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", + "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==" }, "signal-exit": { "version": "3.0.3", @@ -3221,16 +3293,10 @@ "semver": "^7.5.3" } }, - "sliced": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", - "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" - }, "sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", - "optional": true, "requires": { "memory-pager": "^1.0.2" } diff --git a/package.json b/package.json index cd9dcf6af..2f22da5ec 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "express-flash": "^0.0.2", "express-session": "^1.17.1", "mongodb": "^3.6.5", - "mongoose": "^5.12.3", + "mongoose": "^8.3.4", "morgan": "^1.10.0", "passport": "^0.6.0", "passport-local": "^1.0.0", diff --git a/server.js b/server.js index 6d6ef84b5..3e5ef2456 100644 --- a/server.js +++ b/server.js @@ -43,5 +43,5 @@ app.use('/', mainRoutes) app.use('/todos', todoRoutes) app.listen(process.env.PORT, ()=>{ - console.log('Server is running, you better catch it!') + console.log(`Server is running on: http://localhost:${process.env.PORT}/`) }) \ No newline at end of file From ab3e217c2fd7f4a12ad7856ca2a7436188038ca5 Mon Sep 17 00:00:00 2001 From: Renna Carver <87547832+rennacarver@users.noreply.github.com> Date: Tue, 14 May 2024 22:50:03 -0700 Subject: [PATCH 04/12] change callbacks to promises for MongoDB --- controllers/auth.js | 77 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 62 insertions(+), 15 deletions(-) diff --git a/controllers/auth.js b/controllers/auth.js index ec7a85dec..6a9744561 100644 --- a/controllers/auth.js +++ b/controllers/auth.js @@ -77,22 +77,69 @@ const User = require('../models/User') User.findOne({$or: [ {email: req.body.email}, {userName: req.body.userName} - ]}, (err, existingUser) => { - if (err) { return next(err) } - if (existingUser) { - req.flash('errors', { msg: 'Account with that email address or username already exists.' }) - return res.redirect('../signup') - } - user.save((err) => { - if (err) { return next(err) } - req.logIn(user, (err) => { - if (err) { - return next(err) + ]}) + .then( + (err, existingUser) => { + if (err) { return next(err) } + + if (existingUser) { + req.flash('errors', { msg: 'Account with that email address or username already exists.' }) + return res.redirect('../signup') } - res.redirect('/todos') - }) - }) - }) + + user.save() + .then( + (err) => { + + if (err) { return next(err) } + + req.logIn(user, (err) => { + if (err) { + return next(err) + } + res.redirect('/todos') + }) + } + ) + } + ) + + // app.put('/markComplete', (request, response) => { + // db.collection('todos').updateOne({thing: request.body.itemFromJS},{ + // $set: { + // completed: true + // } + // },{ + // sort: {_id: -1}, + // upsert: false + // }) + // .then(result => { + // console.log('Marked Complete') + // response.json('Marked Complete') + // }) + // .catch(error => console.error(error)) + + // }) + + // User.findOne({$or: [ + // {email: req.body.email}, + // {userName: req.body.userName} + // ]}, (err, existingUser) => { + // if (err) { return next(err) } + // if (existingUser) { + // req.flash('errors', { msg: 'Account with that email address or username already exists.' }) + // return res.redirect('../signup') + // } + // user.save((err) => { + // if (err) { return next(err) } + // req.logIn(user, (err) => { + // if (err) { + // return next(err) + // } + // res.redirect('/todos') + // }) + // }) + // }) } \ No newline at end of file From 44664849a40a3b6bfbbbc3eecfdffd02da8e807a Mon Sep 17 00:00:00 2001 From: Renna Carver <87547832+rennacarver@users.noreply.github.com> Date: Wed, 15 May 2024 11:12:59 -0700 Subject: [PATCH 05/12] remove callback from findOne in passport.js --- config/passport.js | 33 ++++++++++++++++++--------------- controllers/auth.js | 38 -------------------------------------- 2 files changed, 18 insertions(+), 53 deletions(-) diff --git a/config/passport.js b/config/passport.js index 3058d7e09..88697d8c6 100644 --- a/config/passport.js +++ b/config/passport.js @@ -4,22 +4,25 @@ const User = require('../models/User') module.exports = function (passport) { passport.use(new LocalStrategy({ usernameField: 'email' }, (email, password, done) => { - User.findOne({ email: email.toLowerCase() }, (err, user) => { - if (err) { return done(err) } - if (!user) { - return done(null, false, { msg: `Email ${email} not found.` }) - } - if (!user.password) { - return done(null, false, { msg: 'Your account was registered using a sign-in provider. To enable password login, sign in using a provider, and then set a password under your user profile.' }) - } - user.comparePassword(password, (err, isMatch) => { - if (err) { return done(err) } - if (isMatch) { - return done(null, user) + User.findOne({ email: email.toLowerCase() }) + .then( + (err, user) => { + if (err) { return done(err) } + if (!user) { + return done(null, false, { msg: `Email ${email} not found.` }) + } + if (!user.password) { + return done(null, false, { msg: 'Your account was registered using a sign-in provider. To enable password login, sign in using a provider, and then set a password under your user profile.' }) + } + user.comparePassword(password, (err, isMatch) => { + if (err) { return done(err) } + if (isMatch) { + return done(null, user) + } + return done(null, false, { msg: 'Invalid email or password.' }) + }) } - return done(null, false, { msg: 'Invalid email or password.' }) - }) - }) + ) })) diff --git a/controllers/auth.js b/controllers/auth.js index 6a9744561..506b11491 100644 --- a/controllers/auth.js +++ b/controllers/auth.js @@ -104,42 +104,4 @@ const User = require('../models/User') } ) - // app.put('/markComplete', (request, response) => { - // db.collection('todos').updateOne({thing: request.body.itemFromJS},{ - // $set: { - // completed: true - // } - // },{ - // sort: {_id: -1}, - // upsert: false - // }) - // .then(result => { - // console.log('Marked Complete') - // response.json('Marked Complete') - // }) - // .catch(error => console.error(error)) - - // }) - - // User.findOne({$or: [ - // {email: req.body.email}, - // {userName: req.body.userName} - // ]}, (err, existingUser) => { - // if (err) { return next(err) } - // if (existingUser) { - // req.flash('errors', { msg: 'Account with that email address or username already exists.' }) - // return res.redirect('../signup') - // } - // user.save((err) => { - // if (err) { return next(err) } - // req.logIn(user, (err) => { - // if (err) { - // return next(err) - // } - // res.redirect('/todos') - // }) - // }) - // }) - - } \ No newline at end of file From 86298e56676d24ea732672de7db3f727e7190ca3 Mon Sep 17 00:00:00 2001 From: Renna Carver <87547832+rennacarver@users.noreply.github.com> Date: Wed, 15 May 2024 11:52:39 -0700 Subject: [PATCH 06/12] add favicon --- controllers/auth.js | 4 ++++ public/favicon.ico | Bin 0 -> 15406 bytes views/login.ejs | 1 + 3 files changed, 5 insertions(+) create mode 100644 public/favicon.ico diff --git a/controllers/auth.js b/controllers/auth.js index 506b11491..1f9500f0e 100644 --- a/controllers/auth.js +++ b/controllers/auth.js @@ -18,6 +18,8 @@ const User = require('../models/User') if (validationErrors.length) { req.flash('errors', validationErrors) + //debug console statement + console.log('validation errors') return res.redirect('/login') } req.body.email = validator.normalizeEmail(req.body.email, { gmail_remove_dots: false }) @@ -25,6 +27,8 @@ const User = require('../models/User') passport.authenticate('local', (err, user, info) => { if (err) { return next(err) } if (!user) { + //console debug statement + console.log('user not found?') req.flash('errors', info) return res.redirect('/login') } diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7b21397f0f9f47bbe8d9e211a2b43fc0a2b71f3f GIT binary patch literal 15406 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≥oWxHT_a9QsMw z6+QHo1p0`6>hS$YFYBeZ)J@*ZlPc+An|G0OrduC3~ zgR*zV_H=q@`L6yM`!C<&p=oPJBp*#pA5Cy~dTBW>ep&|oG}%)dKzhZ{w6B&@Iza!U zSMt_e{k1qt7k#cS`d#ds(mwL1@6GXREAK`LJv=LUnd$491n41(woX=>>1AdhJRu$7 zajEn(Q*b3#!Q8VXdYTE$KZ}zP5>1bj2;u9HC|-$6QCD#xB8rH_`S5U@yL=gEFNfhw zSSU`1GEXh!5`sf6@_JFa24A{}po`~m^88sGKO0OhBLQ*dPRXB>Jv!N^i?#GYQ94Ne zqDr%F@n;j5tx4%ftvHy?mgS!@3RViJVW|b$WXuzl8Z6o;)y!YeR-v(J7|kuC z^m)e7(msKP)^W*i6ghr7cLvCwBXjk9$zAdtc^>dy_cgu8Iq+KZ1^vg*B>&Ot`;X~C zekgg6o-66Wkh}09J(kgjA$Q?Lx-Wj2ekAh~=|{S84cNdnO!6d|>$jd~Fv*v65+DJPtvEOhTc7aAMT7pU)qdafiwJlT=;tl z{`4-L{Dpt%xk~2mA$h1X{6$Wp`%;;|+f(>Up5{;R56v#8zd1>)A!`ko9OS3PW!upzwo*<%KMSVTvrqKL3caJpE1+PHt*~ir{_%cu}|pt+L-ICRB^AK zrABP3&>mH|lFVGaL?uEJa&ajk2bbcra4{|u7h*GTK1TLIg%^4@I)!tHf=I@h$RwP8 z0>P1q^hp!xlO`aDKB?0yJsB2@6QMCUlc1qDJW2?EdW_!qDDxABrQ8V<^July)y*a3 zPoG?P)pzMtx6`ld5Pmhe3(vZ}dyL-g2!6OVi1Nk(80i^ntA%$xEP2=2m80~pN4ai} zat;@H5yMEO51mpv?BZj)df6jS_}Md__G7-bi?{9cx0CE6$g3WNwW$|Pcez)#3;y*| zKJbj!J@S~}?ex5F(T8rN7b|@4;%m(Np#QF_9zkyP7_#VpXVU*pr~mErz*EY{peP%Y zeQ^5QNkpQZemId(D*W)rJ@IKjUhsB!_wT(DVtw-bx z1a4f$yn!WB-oOr@1c$oPuYhyc$^p{U<56#&^l{sA{M|`_KTohPsJ%`snTG9qFXc z-;46y2nltYq(0?&@`HQ@R`HtL! zuju`Y|2cett<;=1Z}=D+*M7(|`}@>&#TmwV78Y}+GbisQ&X?j0<2VO%@8HyNH*oK; zeh$yT%nkBg`W*A!YtTO-y!b)pM)VRr5(dWmP(l6{`wtTTn|DUYdw}`*y+k)X{GJ*9 zQqIJ;a^6J1Qfgz1hy~=&+y%d{m_IQGJH42{;3;e7TQ__}t^9p#Vje}n>bIzqQ*&79 z)ExdO=?&h@r|?=V^oHNSL&|A*hItjglr&I@KmWJkNB-Aa>g4>2sWIjf3^Tt$&aoIA z@0a*n%bU>J$^53a5pwRAxQl#?=GIS*7-QJWgZT0o{IwkUt<5pFR*`l=GH`)3PmVlbZpHm6DZfJGcZhx%A}XpYP}g{y($ORt7~9_F?NqJ_W)gkqs&7YI(e1R&)5C@EHT)R?!i9h4$0`@bAj%` zUcM(oJntUpkxT@G}TM+bkem;bR~o&q8AQ-+zRBmRdW>M%@{ zS5eA>m&I8DA$J^AG^ozIXOOgb>;W>o;$zm?1Sm}amfvG)a|`@m7qu|H literal 0 HcmV?d00001 diff --git a/views/login.ejs b/views/login.ejs index 8c2479ce0..a277c57ed 100644 --- a/views/login.ejs +++ b/views/login.ejs @@ -14,6 +14,7 @@ <% } %> <% if (locals.messages.info) { %> <% messages.info.forEach( el => { %> +

There is an error

<%= el.msg %>
<% }) %> <% } %> From 1342a448990da7c995475d42472623311ab8798b Mon Sep 17 00:00:00 2001 From: Renna Carver <87547832+rennacarver@users.noreply.github.com> Date: Wed, 15 May 2024 13:16:01 -0700 Subject: [PATCH 07/12] locate error in auth.js --- controllers/auth.js | 11 +++++------ views/login.ejs | 1 - 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/controllers/auth.js b/controllers/auth.js index 1f9500f0e..610a87e45 100644 --- a/controllers/auth.js +++ b/controllers/auth.js @@ -12,23 +12,22 @@ const User = require('../models/User') } exports.postLogin = (req, res, next) => { + const validationErrors = [] if (!validator.isEmail(req.body.email)) validationErrors.push({ msg: 'Please enter a valid email address.' }) if (validator.isEmpty(req.body.password)) validationErrors.push({ msg: 'Password cannot be blank.' }) - + if (validationErrors.length) { req.flash('errors', validationErrors) - //debug console statement - console.log('validation errors') return res.redirect('/login') } req.body.email = validator.normalizeEmail(req.body.email, { gmail_remove_dots: false }) passport.authenticate('local', (err, user, info) => { - if (err) { return next(err) } + + if (err) { + return next(err) } //error is occuring on this line if (!user) { - //console debug statement - console.log('user not found?') req.flash('errors', info) return res.redirect('/login') } diff --git a/views/login.ejs b/views/login.ejs index a277c57ed..8c2479ce0 100644 --- a/views/login.ejs +++ b/views/login.ejs @@ -14,7 +14,6 @@ <% } %> <% if (locals.messages.info) { %> <% messages.info.forEach( el => { %> -

There is an error

<%= el.msg %>
<% }) %> <% } %> From aab9da82507ef391092074bcf471cb7af944e81f Mon Sep 17 00:00:00 2001 From: Renna Carver <87547832+rennacarver@users.noreply.github.com> Date: Wed, 22 May 2024 12:20:12 -0700 Subject: [PATCH 08/12] move session secret to .env file --- config/.env | 1 + server.js | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/config/.env b/config/.env index ac2fa6264..ec7f673f1 100644 --- a/config/.env +++ b/config/.env @@ -1,2 +1,3 @@ PORT=8000 +SECRET=kuromi black DB_STRING=mongodb+srv://mayecarver:KjFr1KquaVWqQfSw@cluster0.uwnzbd7.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0 \ No newline at end of file diff --git a/server.js b/server.js index 3e5ef2456..b352f09af 100644 --- a/server.js +++ b/server.js @@ -26,7 +26,7 @@ app.use(logger('dev')) // Sessions app.use( session({ - secret: 'keyboard cat', + secret: process.env.SECRET, resave: false, saveUninitialized: false, store: new MongoStore({ mongooseConnection: mongoose.connection }), @@ -38,7 +38,8 @@ app.use(passport.initialize()) app.use(passport.session()) app.use(flash()) - + +// Routes app.use('/', mainRoutes) app.use('/todos', todoRoutes) From 28d7943307359991a9631625d5d24ed8bdcfa1b9 Mon Sep 17 00:00:00 2001 From: Renna Carver <87547832+rennacarver@users.noreply.github.com> Date: Fri, 19 Jul 2024 13:18:56 -0700 Subject: [PATCH 09/12] update auth code to enable signup and login --- config/passport.js | 55 ++++++++++++++++++------------ controllers/auth.js | 81 ++++++++++++++++++--------------------------- 2 files changed, 66 insertions(+), 70 deletions(-) diff --git a/config/passport.js b/config/passport.js index 88697d8c6..5a88868b4 100644 --- a/config/passport.js +++ b/config/passport.js @@ -1,36 +1,47 @@ const LocalStrategy = require('passport-local').Strategy const mongoose = require('mongoose') const User = require('../models/User') +const bcrypt = require('bcrypt') module.exports = function (passport) { - passport.use(new LocalStrategy({ usernameField: 'email' }, (email, password, done) => { - User.findOne({ email: email.toLowerCase() }) - .then( - (err, user) => { - if (err) { return done(err) } - if (!user) { - return done(null, false, { msg: `Email ${email} not found.` }) - } - if (!user.password) { - return done(null, false, { msg: 'Your account was registered using a sign-in provider. To enable password login, sign in using a provider, and then set a password under your user profile.' }) - } - user.comparePassword(password, (err, isMatch) => { - if (err) { return done(err) } - if (isMatch) { - return done(null, user) - } - return done(null, false, { msg: 'Invalid email or password.' }) - }) + passport.use( + new LocalStrategy({ usernameField: 'email' }, async (email, password, done) => { + try { + // Find the user by email + const user = await User.findOne({ email }) + + // If user not found, return error + if (!user) { + return done(null, false, { message: 'Invalid email or password' }) } - ) - })) + + // Check password + const isMatch = await bcrypt.compare(password, user.password) + + if (!isMatch) { + return done(null, false, { message: 'Invalid email or password' }) + } + + return done(null, user) + } catch (err) { + return done(err) + } + }) + ) + // Serialize user into session passport.serializeUser((user, done) => { done(null, user.id) }) - passport.deserializeUser((id, done) => { - User.findById(id, (err, user) => done(err, user)) + // Deserialize user from session + passport.deserializeUser(async (id, done) => { + try { + const user = await User.findById(id) + done(null, user) + } catch (err) { + done(err) + } }) } diff --git a/controllers/auth.js b/controllers/auth.js index 610a87e45..cdd6b6d1b 100644 --- a/controllers/auth.js +++ b/controllers/auth.js @@ -1,6 +1,7 @@ const passport = require('passport') const validator = require('validator') const User = require('../models/User') +const bcrypt = require('bcrypt') exports.getLogin = (req, res) => { if (req.user) { @@ -23,10 +24,8 @@ const User = require('../models/User') } req.body.email = validator.normalizeEmail(req.body.email, { gmail_remove_dots: false }) - passport.authenticate('local', (err, user, info) => { - - if (err) { - return next(err) } //error is occuring on this line + passport.authenticate('local', (err, user, info) => { + if (err) return next(err) //error is occuring on this line if (!user) { req.flash('errors', info) return res.redirect('/login') @@ -59,52 +58,38 @@ const User = require('../models/User') }) } - exports.postSignup = (req, res, next) => { - const validationErrors = [] - if (!validator.isEmail(req.body.email)) validationErrors.push({ msg: 'Please enter a valid email address.' }) - if (!validator.isLength(req.body.password, { min: 8 })) validationErrors.push({ msg: 'Password must be at least 8 characters long' }) - if (req.body.password !== req.body.confirmPassword) validationErrors.push({ msg: 'Passwords do not match' }) + exports.postSignup = async(req, res) => { + const { userName, email, password } = req.body - if (validationErrors.length) { - req.flash('errors', validationErrors) - return res.redirect('../signup') - } - req.body.email = validator.normalizeEmail(req.body.email, { gmail_remove_dots: false }) + try { + // Check if user already exists + let user = await User.findOne({ email }) - const user = new User({ - userName: req.body.userName, - email: req.body.email, - password: req.body.password - }) + if (user) { + return res.status(400).json({ message: 'User already exists' }) + } - User.findOne({$or: [ - {email: req.body.email}, - {userName: req.body.userName} - ]}) - .then( - (err, existingUser) => { - if (err) { return next(err) } - - if (existingUser) { - req.flash('errors', { msg: 'Account with that email address or username already exists.' }) - return res.redirect('../signup') - } - - user.save() - .then( - (err) => { - - if (err) { return next(err) } - - req.logIn(user, (err) => { - if (err) { - return next(err) - } - res.redirect('/todos') - }) - } - ) + // Create new user + user = new User({ userName, email, password }) + + // Hash the password + const salt = await bcrypt.genSalt(10) + user.password = await bcrypt.hash(password, salt) + + // Save user to DB + await user.save(); + + //res.json({ message: 'Registration successful' }); + + req.logIn(user, (err) => { + if (err) { + return next(err) } - ) - + res.redirect('/todos') + }) + //res.redirect('/home') + } catch (err) { + console.error(err) + res.status(500).json({ message: 'Server error' }) + } } \ No newline at end of file From 70900465b9daf00292eb5977f30bbed49406ca33 Mon Sep 17 00:00:00 2001 From: Renna Carver <87547832+rennacarver@users.noreply.github.com> Date: Fri, 19 Jul 2024 19:41:57 -0700 Subject: [PATCH 10/12] update model --- config/passport.js | 32 +++++++------- controllers/auth.js | 62 ++++++++++++--------------- models/User.js | 55 +++++++++--------------- public/css/style.css | 100 +++++++++++++++++++++++++++++++++++++++++++ public/js/index.js | 3 ++ routes/main.js | 4 +- server.js | 2 +- views/index.ejs | 30 +++++++++++-- views/login.ejs | 26 ----------- views/signup.ejs | 23 ---------- 10 files changed, 197 insertions(+), 140 deletions(-) create mode 100644 public/js/index.js delete mode 100644 views/login.ejs delete mode 100644 views/signup.ejs diff --git a/config/passport.js b/config/passport.js index 5a88868b4..1002c4bce 100644 --- a/config/passport.js +++ b/config/passport.js @@ -3,45 +3,45 @@ const mongoose = require('mongoose') const User = require('../models/User') const bcrypt = require('bcrypt') -module.exports = function (passport) { + +module.exports = function(passport) { passport.use( new LocalStrategy({ usernameField: 'email' }, async (email, password, done) => { try { // Find the user by email - const user = await User.findOne({ email }) + const user = await User.findOne({ email }); // If user not found, return error if (!user) { - return done(null, false, { message: 'Invalid email or password' }) + return done(null, false, { message: 'Invalid email or password' }); } // Check password - const isMatch = await bcrypt.compare(password, user.password) + const isMatch = await bcrypt.compare(password, user.password); if (!isMatch) { - return done(null, false, { message: 'Invalid email or password' }) + return done(null, false, { message: 'Invalid email or password' }); } - return done(null, user) + return done(null, user); } catch (err) { - return done(err) + return done(err); } }) - ) - + ); // Serialize user into session passport.serializeUser((user, done) => { - done(null, user.id) - }) + done(null, user.id); + }); // Deserialize user from session passport.deserializeUser(async (id, done) => { try { - const user = await User.findById(id) - done(null, user) + const user = await User.findById(id); + done(null, user); } catch (err) { - done(err) + done(err); } - }) -} + }); +}; \ No newline at end of file diff --git a/controllers/auth.js b/controllers/auth.js index cdd6b6d1b..44cb073f0 100644 --- a/controllers/auth.js +++ b/controllers/auth.js @@ -3,37 +3,31 @@ const validator = require('validator') const User = require('../models/User') const bcrypt = require('bcrypt') - exports.getLogin = (req, res) => { - if (req.user) { - return res.redirect('/todos') - } - res.render('login', { - title: 'Login' - }) - } +// exports.getLogin = (req, res) => { +// if (req.user) { +// return res.redirect('/todos') +// } +// res.render('login', { +// title: 'Login' +// }) +// } exports.postLogin = (req, res, next) => { - - const validationErrors = [] - if (!validator.isEmail(req.body.email)) validationErrors.push({ msg: 'Please enter a valid email address.' }) - if (validator.isEmpty(req.body.password)) validationErrors.push({ msg: 'Password cannot be blank.' }) - - if (validationErrors.length) { - req.flash('errors', validationErrors) - return res.redirect('/login') - } - req.body.email = validator.normalizeEmail(req.body.email, { gmail_remove_dots: false }) + passport.authenticate('local', (err, user, info) => { + if (err) { + return next(err) + } - passport.authenticate('local', (err, user, info) => { - if (err) return next(err) //error is occuring on this line if (!user) { - req.flash('errors', info) - return res.redirect('/login') + return res.status(401).json({ message: info.message }) } - req.logIn(user, (err) => { - if (err) { return next(err) } - req.flash('success', { msg: 'Success! You are logged in.' }) - res.redirect(req.session.returnTo || '/todos') + + req.logIn(user, err => { + if (err) { + return next(err) + } + + res.redirect('/todos') }) })(req, res, next) } @@ -49,14 +43,14 @@ const bcrypt = require('bcrypt') }) } - exports.getSignup = (req, res) => { - if (req.user) { - return res.redirect('/todos') - } - res.render('signup', { - title: 'Create Account' - }) - } + // exports.getSignup = (req, res) => { + // if (req.user) { + // return res.redirect('/todos') + // } + // res.render('signup', { + // title: 'Create Account' + // }) + // } exports.postSignup = async(req, res) => { const { userName, email, password } = req.body diff --git a/models/User.js b/models/User.js index db4b2d116..45fe9bad1 100644 --- a/models/User.js +++ b/models/User.js @@ -1,36 +1,23 @@ -const bcrypt = require('bcrypt') -const mongoose = require('mongoose') +const mongoose = require('mongoose'); const UserSchema = new mongoose.Schema({ - userName: { type: String, unique: true }, - email: { type: String, unique: true }, - password: String -}) - - -// Password hash middleware. - - UserSchema.pre('save', function save(next) { - const user = this - if (!user.isModified('password')) { return next() } - bcrypt.genSalt(10, (err, salt) => { - if (err) { return next(err) } - bcrypt.hash(user.password, salt, (err, hash) => { - if (err) { return next(err) } - user.password = hash - next() - }) - }) -}) - - -// Helper method for validating user's password. - -UserSchema.methods.comparePassword = function comparePassword(candidatePassword, cb) { - bcrypt.compare(candidatePassword, this.password, (err, isMatch) => { - cb(err, isMatch) - }) -} - - -module.exports = mongoose.model('User', UserSchema) + userName: { + type: String, + unique: true + }, + email: { + type: String, + required: true, + unique: true, + }, + password: { + type: String, + required: true, + }, + createdAt: { + type: Date, + default: Date.now, + }, +}); + +module.exports = mongoose.model('User', UserSchema); \ No newline at end of file diff --git a/public/css/style.css b/public/css/style.css index fbd6b929e..17b395b00 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -7,4 +7,104 @@ h1{ } .not{ text-decoration: underline; +} + +/* Login Form CSS (https://codepen.io/colorlib/pen/rxddKy) */ +@import url(https://fonts.googleapis.com/css?family=Roboto:300); + +.login-page { + width: 360px; + padding: 8% 0 0; + margin: auto; +} +.form { + position: relative; + z-index: 1; + background: #FFFFFF; + max-width: 360px; + margin: 0 auto 100px; + padding: 45px; + text-align: center; + box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24); +} +.form input { + font-family: "Roboto", sans-serif; + outline: 0; + background: #f2f2f2; + width: 100%; + border: 0; + margin: 0 0 15px; + padding: 15px; + box-sizing: border-box; + font-size: 14px; +} +.form .sub-btn { + font-family: "Roboto", sans-serif; + text-transform: uppercase; + outline: 0; + background: #4CAF50; + width: 100%; + border: 0; + padding: 15px; + color: #FFFFFF; + font-size: 14px; + -webkit-transition: all 0.3 ease; + transition: all 0.3 ease; + cursor: pointer; +} +.form button:hover,.form button:active,.form button:focus { + background: #43A047; +} +.form .message { + margin: 15px 0 0; + color: #b3b3b3; + font-size: 12px; +} +.form .message a { + color: #4CAF50; + text-decoration: none; +} +.form .register-form { + display: none; +} +.container { + position: relative; + z-index: 1; + max-width: 300px; + margin: 0 auto; +} +.container:before, .container:after { + content: ""; + display: block; + clear: both; +} +.container .info { + margin: 50px auto; + text-align: center; +} +.container .info h1 { + margin: 0 0 15px; + padding: 0; + font-size: 36px; + font-weight: 300; + color: #1a1a1a; +} +.container .info span { + color: #4d4d4d; + font-size: 12px; +} +.container .info span a { + color: #000000; + text-decoration: none; +} +.container .info span .fa { + color: #EF3B3A; +} +body { + background: #76b852; /* fallback for old browsers */ + background: rgb(141,194,111); + background: linear-gradient(90deg, rgba(141,194,111,1) 0%, rgba(118,184,82,1) 50%); + font-family: "Roboto", sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } \ No newline at end of file diff --git a/public/js/index.js b/public/js/index.js new file mode 100644 index 000000000..ca1ac1982 --- /dev/null +++ b/public/js/index.js @@ -0,0 +1,3 @@ +$('.message a').click(function(){ + $('form').animate({height: "toggle", opacity: "toggle"}, "slow"); + }); \ No newline at end of file diff --git a/routes/main.js b/routes/main.js index bdeb7529f..c832fdd20 100644 --- a/routes/main.js +++ b/routes/main.js @@ -5,10 +5,10 @@ const homeController = require('../controllers/home') const { ensureAuth, ensureGuest } = require('../middleware/auth') router.get('/', homeController.getIndex) -router.get('/login', authController.getLogin) +// router.get('/login', authController.getLogin) router.post('/login', authController.postLogin) router.get('/logout', authController.logout) -router.get('/signup', authController.getSignup) +// router.get('/signup', authController.getSignup) router.post('/signup', authController.postSignup) module.exports = router \ No newline at end of file diff --git a/server.js b/server.js index b352f09af..b72556f0e 100644 --- a/server.js +++ b/server.js @@ -37,7 +37,7 @@ app.use( app.use(passport.initialize()) app.use(passport.session()) -app.use(flash()) +//app.use(flash()) // Routes app.use('/', mainRoutes) diff --git a/views/index.ejs b/views/index.ejs index 774fc9b53..b5a5f2eb0 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -4,11 +4,33 @@ - Document + My Todo List + + -

Create Your VERY OWN Todolist!

- Login - Signup + + + \ No newline at end of file diff --git a/views/login.ejs b/views/login.ejs deleted file mode 100644 index 8c2479ce0..000000000 --- a/views/login.ejs +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - Document - - - <% if (locals.messages.errors) { %> - <% messages.errors.forEach( el => { %> -
<%= el.msg %>
- <% }) %> - <% } %> - <% if (locals.messages.info) { %> - <% messages.info.forEach( el => { %> -
<%= el.msg %>
- <% }) %> - <% } %> -
- - - -
- - \ No newline at end of file diff --git a/views/signup.ejs b/views/signup.ejs deleted file mode 100644 index 409d7045b..000000000 --- a/views/signup.ejs +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - Document - - - <% if (locals.messages.errors) { %> - <% messages.errors.forEach( el => { %> -
<%= el.msg %>
- <% }) %> - <% } %> -
- - - - - -
- - \ No newline at end of file From e352ace8ae278f4989cca5dc5ca900249a1e29f3 Mon Sep 17 00:00:00 2001 From: Renna Carver <87547832+rennacarver@users.noreply.github.com> Date: Fri, 19 Jul 2024 20:03:28 -0700 Subject: [PATCH 11/12] apply style changes to main app page --- public/css/style.css | 6 +++++- public/img/todo.png | Bin 0 -> 475672 bytes views/index.ejs | 3 ++- views/todos.ejs | 34 ++++++++++++++++++---------------- 4 files changed, 25 insertions(+), 18 deletions(-) create mode 100644 public/img/todo.png diff --git a/public/css/style.css b/public/css/style.css index 17b395b00..c7656a944 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -1,5 +1,6 @@ h1{ - color: red; + color: darkgreen; + padding-bottom: 50px; } .completed{ text-decoration: line-through; @@ -8,6 +9,9 @@ h1{ .not{ text-decoration: underline; } +img { + padding-bottom: 20px; +} /* Login Form CSS (https://codepen.io/colorlib/pen/rxddKy) */ @import url(https://fonts.googleapis.com/css?family=Roboto:300); diff --git a/public/img/todo.png b/public/img/todo.png new file mode 100644 index 0000000000000000000000000000000000000000..1abd4a0d5898658ad0e4308bdfe1a5e31f5dbe91 GIT binary patch literal 475672 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�KtBxJ1|mOC^$2G`)!aox75qk5B{$j`g6Kg zbE?gZ%-^~>`MDpUXrcdAn7?dHf&@OoVRa3`x_jLyJr|_BznTJzmfnGQvWKkmO9&;2 z)lw^Ln$bz*x4rCY4Ps)_gCNa2AEBFryL<{B@biFvk*J#qI@a(AkG zWn*Kb=G5}W+<8B_h2tn~$Tr2tf~S_@&Xe)Q7y0u02)lDg6=IC&cNa)f_ zV!(N4Xc2O6)d?DQEe-&ZbC2kH6~S;IbwE8%v*P|S5FkwRXylqPdhlTQ=kYX~-f!;5 z9ndMysYNakfpItDu~q5es=s0TB(4@@LqYSr=Yk%`+(>Br0`tPRf{Ua-%P-QU$jks? z%P0vdXx=7vrW`A5X*e3<1n>@1D(cmR2*yf7D{ObsRClv0#Wp6st@ZwFlE_>CK(}1_ z%?dW!mv28?dDKqkFfuZ_fOy7c>C?@Vvtj@9%KN|2nE%UvTolKMJIrp4o{J4zsF^Tv zxiiBv+EeM?@^|9OC(-r?li~+8ss{ox6k|_O+=xnlY0*}gO$sk4)MU)v?d>^0P(PCG zZ-mlSmE;1KJlh@+(kSwPp?phon&BUB)kllM@^6&SOC-GTZ2JJM+C>aa9Pi6b+fZ$i zCh6(^TL-wg^O!QwX;o8?-yjAS40EK4gFZpvCr`_dCfQu8e1RuA8I@?Fnv$Ec(@(-M zKbe!NR*bn!-WsjU+7X8d99f(l{Ju9nULEWGiZ`dsS_8u2BLsO!8590Gc!!$H0 zNM`PE7;u`^dL4&+8*mt!Pv8Ug){P+)7a*-4mSxfSl={5}?);ArvBq zkN&g9t+SWp%EcNQ6*EmNL!!@UE~ zJ=ytaeTx%uaBwhdsx8@N4FtnIF1fi-%6l<>cZ*omspYHwBOoI+1G^Hw@FK&~Jb3i8 zjGI({n2SrE3@ph^rpt7*e+NoImHI4cO73V#sG`W=ldqZW*IUi%!rg`~%XDgKBKWmq zu2x(D`Pht$?zvorM(ruuh9F9&t93GGng^A<^8iLp4QW<9@pm0&Prd0t!^)Lg4TdZ9 z3`_=ge^?RT3Z0YRocC}3zdSyBW$*vr2rKdj5wT5b zFPt{u6=w}U6@1j71lI|PMG&C_XZQnG|EOy5fNQ?;sLvy;dC?YabHCg&qwk9s1xbxY zJ(AnTekkFp6oiEdiCWf#(DMKx;Iy;jEDH*JHLk%Ju1RB_h8xnc+ zIZd)GPZPHuCg`IVNLZ|>F>2a&t+${nIj4v*gW zH&wBNc$+UcrUq!kRpFpw&cc3%L-8c3wi#;(0N*!T)Asu2ZUS1^3F)~X{r$z$+d$?x zIx))rcT5sf_Ukba&Y32Z;3DKbI|N1%rOox_=*->sH*ekA{<@VX=&*m?Oxp{S9CZ-V_#z}_W|i21skFX9yc3KLP?ea znA$p;Um~ℜ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 u?8;X!_{+-w{~x{_)c*&5C|u&_vUk(6! - My Todo List + Todo List App