package.json updated

This commit is contained in:
rxf
2025-09-02 19:06:32 +02:00
parent 5ccd37b931
commit 633e1ea4f3
4 changed files with 784 additions and 573 deletions

1321
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
{ {
"name": "espid2sensor", "name": "espid2sensor",
"version": "1.1.1", "version": "1.2.0",
"date": "2025-09-01 17:10 UTC", "date": "2025-09-02 17:00 UTC",
"type": "module", "type": "module",
"description": "Kleine Webapp ESP-ID <-> Sensornummer, speichern in MongoDB", "description": "Kleine Webapp ESP-ID <-> Sensornummer, speichern in MongoDB",
"main": "server.js", "main": "server.js",
@@ -14,14 +14,14 @@
"bcrypt": "^6.0.0", "bcrypt": "^6.0.0",
"cors": "^2.8.5", "cors": "^2.8.5",
"dotenv": "^17.2.1", "dotenv": "^17.2.1",
"express": "^4.18.2", "express": "^5.1.0",
"express-session": "^1.18.2", "express-session": "^1.18.2",
"mongodb": "^6.6.0", "mongodb": "^6.19.0",
"pug": "^3.0.2" "pug": "^3.0.3"
}, },
"devDependencies": { "devDependencies": {
"jest": "^30.0.5", "jest": "^30.1.3",
"nodemon": "^3.0.1", "nodemon": "^3.1.10",
"supertest": "^7.1.4" "supertest": "^7.1.4"
} }
} }

View File

@@ -1,24 +1,22 @@
import bcrypt from 'bcrypt'; import bcrypt from 'bcrypt';
import { getCollections } from '../db/mongo.js'; import { getCollections } from '../db/mongo.js';
import pkg from '../package.json' with { type: "json" }
export function registerAuthRoutes(app) { export function registerAuthRoutes(app) {
const { usersCollection } = getCollections(); const { usersCollection } = getCollections();
const errText = 'Falsche Email oder falsches Passwort.' const errText = 'Falsche Email oder falsches Passwort.'
app.get('/register', (req, res) => res.render('register', { error: null }));
app.post('/register', async (req, res) => { app.get('/login', (req, res) => {
const { email, password } = req.body; const version = pkg.version
if (!email || !password) return res.render('register', { error: 'Bitte Email und Passwort angeben.' }); const vdate = pkg.date
const existingUser = await usersCollection.findOne({ email: email.toLowerCase() }); res.render('login', {
if (existingUser) return res.render('register', { error: 'Email schon registriert.' }); error: null,
const hash = await bcrypt.hash(password, 10); version: version,
await usersCollection.insertOne({ email: email.toLowerCase(), passwordHash: hash }); vdate: vdate
res.redirect('/login'); })
}); });
app.get('/login', (req, res) => res.render('login', { error: null }));
app.post('/login', async (req, res) => { app.post('/login', async (req, res) => {
const { email, password } = req.body; const { email, password } = req.body;
const user = await usersCollection.findOne({ email: email.toLowerCase() }); const user = await usersCollection.findOne({ email: email.toLowerCase() });

View File

@@ -16,6 +16,8 @@ html(lang="de")
label(for="password") Passwort: label(for="password") Passwort:
input#password(type="password" name="password" required) input#password(type="password" name="password" required)
button(type="submit") Login button(type="submit") Login
#version Version: #{version} vom #{vdate}
if error if error
p.error= error p.error= error
script(type="module" src="/login.js") script(type="module" src="/login.js")