Skip to content

Commit

Permalink
move db initialization and emailVerification
Browse files Browse the repository at this point in the history
  • Loading branch information
Joshua2504 committed Aug 27, 2024
1 parent a7ae1bc commit d9381ce
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 43 deletions.
26 changes: 26 additions & 0 deletions server/dbInit.js
Original file line number Diff line number Diff line change
@@ -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;
31 changes: 31 additions & 0 deletions server/emailVerification.js
Original file line number Diff line number Diff line change
@@ -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;
46 changes: 3 additions & 43 deletions server/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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) => {
Expand Down

0 comments on commit d9381ce

Please sign in to comment.