Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions database.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@ function initDb() {
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
)`);

// Users Table
db.run(`CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
email TEXT UNIQUE NOT NULL,
password TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
)`);
// Tasks Table
db.run(`CREATE TABLE IF NOT EXISTS tasks (
id TEXT PRIMARY KEY,
Expand Down
28 changes: 15 additions & 13 deletions server.js
Original file line number Diff line number Diff line change
Expand Up @@ -509,30 +509,32 @@ Text: "${text}"
return res.json(tasks);
});
// ================= AUTH =================
const users = {}; // Simple in-memory user store

// Users stored in SQLite database (persistent)
app.post('/api/auth/signup', (req, res) => {
const { email, password } = req.body;
if (!email || !password) {
return res.status(400).json({ error: 'Email and password required' });
}
if (users[email]) {
return res.status(400).json({ error: 'User already exists' });
}
users[email] = { email, password };
res.json({ success: true, message: 'Account created successfully' });
db.get('SELECT * FROM users WHERE email = ?', [email], (err, row) => {
if (err) return res.status(500).json({ error: err.message });
if (row) return res.status(400).json({ error: 'User already exists' });
db.run('INSERT INTO users (email, password) VALUES (?, ?)', [email, password], function(err) {
if (err) return res.status(500).json({ error: err.message });
res.json({ success: true, message: 'Account created successfully' });
});
});
});

app.post('/api/auth/login', (req, res) => {
const { email, password } = req.body;
if (!email || !password) {
return res.status(400).json({ error: 'Email and password required' });
}
const user = users[email];
if (!user || user.password !== password) {
return res.status(401).json({ error: 'Invalid email or password' });
}
res.json({ success: true, email: user.email });
db.get('SELECT * FROM users WHERE email = ? AND password = ?', [email, password], (err, row) => {
if (err) return res.status(500).json({ error: err.message });
if (!row) return res.status(401).json({ error: 'Invalid email or password' });
res.json({ success: true, email: row.email });
});
});

// Intentional test route for verifying server error page behavior.
Expand Down Expand Up @@ -572,4 +574,4 @@ app.use((err, req, res, next) => {
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log('Server running on port ' + PORT);
});
});