diff --git a/package-lock.json b/package-lock.json index be5d1bb..cea4e81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@google/genai": "^0.14.0", "bcrypt": "^5.1.1", + "check-password-strength": "^3.0.0", "connect-mongo": "^5.1.0", "crypto": "^1.0.1", "dotenv": "^16.5.0", @@ -20,7 +21,7 @@ "joi": "^17.13.3", "mongodb": "^6.16.0", "nodemailer": "^7.0.3", - "sweetalert2": "^11.21.0" + "sweetalert2": "^11.6.13" }, "devDependencies": { "nodemon": "^3.1.10" @@ -446,6 +447,15 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/check-password-strength": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/check-password-strength/-/check-password-strength-3.0.0.tgz", + "integrity": "sha512-XIBvWpb7/RI2DO05tMixE4WbFFvEC7ls/jr1VSrWgXvlCmdiH2fsdkixG0cNGs1uIXwoSqJ75T3s9H/TlJV6Cw==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^5.0.0" + } + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -769,6 +779,18 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -2430,9 +2452,10 @@ } }, "node_modules/sweetalert2": { - "version": "11.21.0", - "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.21.0.tgz", - "integrity": "sha512-fiEK7SqRY/QD/wC2uqEHlfYGZ7qe2UcyQbJpbpj4YRVqplBgcI+euPZLZL+evLINcvbtXmL1SFUdZHKqBHGAAQ==", + "version": "11.6.13", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.6.13.tgz", + "integrity": "sha512-n5yVF0FNx1lm4XzpPyb1HIaiptzODfVyeCzmB809tpK+1bPdoKoevKOxYjrtId75DV7xuIp4r6cjn8xUAB8dPQ==", + "license": "MIT", "funding": { "type": "individual", "url": "https://github.com/sponsors/limonte" diff --git a/package.json b/package.json index 597241f..0d1c5c1 100755 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "dependencies": { "@google/genai": "^0.14.0", "bcrypt": "^5.1.1", + "check-password-strength": "^3.0.0", "connect-mongo": "^5.1.0", "crypto": "^1.0.1", "dotenv": "^16.5.0", @@ -29,7 +30,7 @@ "joi": "^17.13.3", "mongodb": "^6.16.0", "nodemailer": "^7.0.3", - "sweetalert2": "^11.21.0" + "sweetalert2": "^11.6.13" }, "devDependencies": { "nodemon": "^3.1.10" diff --git a/src/auth/authentication.js b/src/auth/authentication.js index d32f0a8..f70635b 100644 --- a/src/auth/authentication.js +++ b/src/auth/authentication.js @@ -1,5 +1,5 @@ +const { passwordStrength } = require("check-password-strength"); const status = require("../util/statuses"); -const session = require("express-session"); const bcrypt = require('bcrypt'); const joi = require("joi"); const salt = 12; @@ -99,6 +99,14 @@ module.exports = (users) => { return res.redirect("/signup"); } + let strength = passwordStrength(req.body.password); + + if (strength.id < 2) { + req.session.errMessage = `Password ${strength.value}`; + res.status(status.BadRequest); + return res.redirect("/signup"); + } + let hashedPassword = await bcrypt.hashSync(req.body.password, salt); users.insertOne({ diff --git a/src/views/profile.ejs b/src/views/profile.ejs index 3ce06c9..da83e04 100644 --- a/src/views/profile.ejs +++ b/src/views/profile.ejs @@ -62,7 +62,7 @@ - + diff --git a/src/views/signup.ejs b/src/views/signup.ejs index ac2d8ac..137ebf1 100644 --- a/src/views/signup.ejs +++ b/src/views/signup.ejs @@ -23,7 +23,7 @@ + placeholder="Enter Password" minlength="8"/>