From d9381ced7e610e68d72aba6a207ef1cd428a0684 Mon Sep 17 00:00:00 2001 From: Joshua Treudler Date: Tue, 27 Aug 2024 14:41:59 +0200 Subject: [PATCH] move db initialization and emailVerification --- server/dbInit.js | 26 +++++++++++++++++++++ server/emailVerification.js | 31 +++++++++++++++++++++++++ server/index.js | 46 +++---------------------------------- 3 files changed, 60 insertions(+), 43 deletions(-) create mode 100644 server/dbInit.js create mode 100644 server/emailVerification.js diff --git a/server/dbInit.js b/server/dbInit.js new file mode 100644 index 0000000..2ec61b8 --- /dev/null +++ b/server/dbInit.js @@ -0,0 +1,26 @@ +const mysql = require('mysql'); + +require('dotenv').config(); +const DB_HOST = process.env.DB_HOST; +const DB_USER = process.env.DB_USER; +const DB_PASS = process.env.DB_PASS; +const DB_NAME = process.env.DB_NAME; +const DB_PORT = process.env.DB_PORT; + +const connection = mysql.createConnection({ + host: DB_HOST, + user: DB_USER, + password: DB_PASS, + database: DB_NAME, + port: DB_PORT, + }); + +connection.connect((err) => { +if (err) { + console.error('Error connecting to the database: ' + err.stack); + return; +} +console.log('Connected to the database as id ' + connection.threadId); +}); + +module.exports = connection; \ No newline at end of file diff --git a/server/emailVerification.js b/server/emailVerification.js new file mode 100644 index 0000000..87c793c --- /dev/null +++ b/server/emailVerification.js @@ -0,0 +1,31 @@ +const express = require('express'); +const router = express.Router(); +const db = require('./dbInit'); // Adjust the path as necessary +// const logger = require('./logger'); // Adjust the path as necessary + +router.get('/user/email/verify/:email_verification_key', (req, res) => { + const email_verification_key = req.params.email_verification_key; + logger.info('Verifying email with email verification key: ' + email_verification_key); + db.query('SELECT * FROM users WHERE email_verification_key = ? AND email_verification_expires > ?', [email_verification_key, new Date()], (err, result) => { + if (err) { + logger.error('Error querying database: ' + err); + res.status(500).send('Internal Server Error'); + return; + } + if (result.length === 0) { + res.json({ status: 'error', message: 'Invalid email verification key or expired' }); + return; + } + const user = result[0]; + db.query('UPDATE users SET email_verified = TRUE, email_verification_key = NULL, email_verification_expires = NULL WHERE id = ?', [user.id], (err, result) => { + if (err) { + logger.error('Error updating email verification in database: ' + err); + res.status(500).send('Internal Server Error'); + return; + } + res.json({ status: 'success', message: 'Email verified' }); + }); + }); +}); + +module.exports = router; \ No newline at end of file diff --git a/server/index.js b/server/index.js index 04263cb..7f555de 100644 --- a/server/index.js +++ b/server/index.js @@ -41,23 +41,7 @@ const SMTP_FROM = process.env.SMTP_FROM; const SESSION_SECRET = process.env.SESSION_SECRET; // MySQL Database -const mysql = require('mysql'); - -const db = mysql.createConnection({ - host: DB_HOST, - user: DB_USER, - password: DB_PASS, - database: DB_NAME, - port: DB_PORT, -}); - -db.connect((err) => { - if (err) { - logger.error('Database connection failed: ' + err.stack); - return; - } - logger.info('Connected to database ' + DB_NAME + ' on ' + DB_HOST + ':' + DB_PORT + ' (threadId ' + db.threadId + ')'); - }); +const db = require('./dbInit'); // Adjust the path as necessary // check if database exists, if not create it // if it exists, check if tables exist, if not create them @@ -786,32 +770,8 @@ app.get(API_PATH + '/user/exportdata', checkAuth, (req, res) => { }); -// confirm email - confirm email with email verification key -// if the key is expired, send a new verification e-mail -app.get(API_PATH + '/user/email/verify/:email_verification_key', (req, res) => { - const email_verification_key = req.params.email_verification_key; - logger.info('Verifying email with email verification key: ' + email_verification_key); - db.query('SELECT * FROM users WHERE email_verification_key = ? AND email_verification_expires > ?', [email_verification_key, new Date()], (err, result) => { - if (err) { - logger.error('Error querying database: ' + err); - res.status(500).send('Internal Server Error'); - return; - } - if (result.length === 0) { - res.json({ status: 'error', message: 'Invalid email verification key or expired' }); - return; - } - const user = result[0]; - db.query('UPDATE users SET email_verified = TRUE, email_verification_key = NULL, email_verification_expires = NULL WHERE id = ?', [user.id], (err, result) => { - if (err) { - logger.error('Error updating email verification in database: ' + err); - res.status(500).send('Internal Server Error'); - return; - } - res.json({ status: 'success', message: 'Email verified' }); - }); - }); -}); +const emailVerificationRouter = require('./emailVerification'); // Adjust the path as necessary +app.use(API_PATH, emailVerificationRouter); // create trainer setup app.post(API_PATH + '/trainer/setup', checkAuth, (req, res) => {