arrange code , change port

This commit is contained in:
Alomairi 2024-09-03 09:54:37 +00:00
parent 619c429d36
commit 97c5918c69
1 changed files with 60 additions and 91 deletions

151
main.js
View File

@ -5,7 +5,7 @@ const mysql = require("mysql2/promise");
const config = require("./config/db.config.js"); const config = require("./config/db.config.js");
const session = require('express-session'); const session = require('express-session');
const PORT = process.env.PORT || 5000; // Default port is 5000 const PORT = process.env.PORT || 8080; // Default port is 5000
const log = { const log = {
yellow: '\x1b[33m%s\x1b[0m', //yellow yellow: '\x1b[33m%s\x1b[0m', //yellow
@ -29,7 +29,6 @@ const pool = mysql.createPool({
queueLimit: 0 queueLimit: 0
}); });
const app = express(); const app = express();
@ -37,9 +36,9 @@ app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views')); app.set('views', path.join(__dirname, 'views'));
app.use(session({ app.use(session({
secret: config.secret, secret: config.secret,
resave: true, resave: true,
saveUninitialized: true saveUninitialized: true
})); }));
app.use(express.json()); app.use(express.json());
app.use(express.urlencoded({ extended: true })); app.use(express.urlencoded({ extended: true }));
@ -47,125 +46,95 @@ app.use(express.static(path.join(__dirname, 'static')));
app.get('/x', function(request, response) { app.get('/x', function (request, response) {
if (request.session.loggedin) { if (request.session.loggedin) {
// Output username // Output username
// response.send('Welcome back, ' + request.session.username + '!'); // response.send('Welcome back, ' + request.session.username + '!');
console.log(request.session.username , 'open main page'); console.log(request.session.username, 'open main page');
// Render home page with username // Render home page with username
response.render('home', { username: request.session.username }); response.render('home', { username: request.session.username });
} else {
// response.send('Please login to view this page!');
} else {
// Not logged in
// response.send('Please login to view this page!');
response.redirect('/login'); response.redirect('/login');
} }
}); });
app.get('/login', function(request, response) { app.get('/login', function (request, response) {
/// Render login template with any message from query parameters /// Render login template with any message from query parameters
console.log('Message:', request.query.message); // Log the message console.log('Message:', request.query.message); // Log the message
response.render('login', { message: request.query.message || '' }); response.render('login', { message: request.query.message || '' });
// response.sendFile(path.join(__dirname + '/login.html'));
}); });
app.post('/auth', async function(request, response) { app.post('/auth', async function (request, response) {
// Capture the input fields // Capture the input fields
const { login, password } = request.body; const { login, password } = request.body;
// Ensure the input fields exist and are not empty // Ensure the input fields exist and are not empty
if (login && password) { if (login && password) {
try { try {
// Get a connection from the pool // Get a connection from the pool
const connection = await pool.getConnection(); const connection = await pool.getConnection();
const [rows] = await connection.execute(
// Execute SQL query 'SELECT * FROM accounts WHERE (username = ? OR email = ?) AND password = ?',
// const [rows] = await connection.execute( [login, login, password]
// 'SELECT * FROM accounts WHERE username = ? AND password = ?', );
// [username, password] // Release the connection back to the pool
// ); connection.release();
const [rows] = await connection.execute( // If the account exists
'SELECT * FROM accounts WHERE (username = ? OR email = ?) AND password = ?', if (rows.length > 0) {
[login, login, password] // Authenticate the user
); request.session.loggedin = true;
request.session.username = rows[0].username;
// console.log(rows); request.session.avatar = rows[0].avatar;
// Redirect to home page
response.redirect('/');
// Release the connection back to the pool } else {
connection.release(); response.redirect('/login?message=Incorrect Username and/or Password!');
// If the account exists
if (rows.length > 0) {
// Authenticate the user
request.session.loggedin = true;
request.session.username = rows[0].username;
request.session.avatar = rows[0].avatar;
// request.session.username = username;
// Redirect to home page
console.log(rows);
response.redirect('/');
} else {
response.redirect('/login?message=Incorrect Username and/or Password!');
}
} catch (error) {
console.error('Database query error:', error);
response.status(500).send('An error occurred while processing your request.');
} }
} catch (error) {
console.error('Database query error:', error);
response.status(500).send('An error occurred while processing your request.');
}
} else { } else {
// response.send('Please enter Username and Password!'); // response.send('Please enter Username and Password!');
response.redirect('/login?message=Please enter Username and Password!'); response.redirect('/login?message=Please enter Username and Password!');
} }
}); });
// http://localhost:3000/home // http://localhost:3000/home
app.get('/', function(request, response) { app.get('/', function (request, response) {
// If the user is loggedin // If the user is loggedin
if (request.session.loggedin) { if (request.session.loggedin) {
// Output username
// response.send('Welcome back, ' + request.session.username + '!');
let avatarSrc = ''; let avatarSrc = '';
if (request.session.avatar) { if (request.session.avatar) {
// Convert BLOB to Base64 if it exists // Convert BLOB to Base64 if it exists
const avatarBase64 = Buffer.from(request.session.avatar).toString('base64'); const avatarBase64 = Buffer.from(request.session.avatar).toString('base64');
avatarSrc = `data:image/jpeg;base64,${avatarBase64}`; // Adjust MIME type as necessary avatarSrc = `data:image/jpeg;base64,${avatarBase64}`; // Adjust MIME type as necessary
} }
// Render home page with username // Render home page with username
response.render('home', { response.render('home', {
username: request.session.username, username: request.session.username,
avatar: avatarSrc avatar: avatarSrc
}); });
} else { } else {
// Not logged in // response.send('Please login to view this page!');
// response.send('Please login to view this page!');
response.redirect('/login'); response.redirect('/login');
} }
response.end(); response.end();
}); });
// http://localhost:8080/logout
app.get('/logout', function (request, response) {
// http://localhost:3000/logout
app.get('/logout', function(request, response) {
request.session.destroy((err) => { request.session.destroy((err) => {
if (err) { if (err) {
return response.status(500).send('Failed to logout'); return response.status(500).send('Failed to logout');
} }
response.redirect('/'); response.redirect('/');
}); });
}); });