tududi/backend/routes/auth.js
Antonis 4fa2aa91bf
Fix E2E test breakage (#380)
* Add logging placeholder functions, fix notes.js uids

* Add UIDs to inbox items. Includes migration.

* Add UID to users.

* Add project UIDs usage.

* Add script that runs specific E2E test(s)

* Only run Chromium E2E tests by default.

* Fix breaking E2E tests

* fixup! Fix breaking E2E tests

---------

Co-authored-by: antanst <>
Co-authored-by: Chris Veleris <chrisveleris@gmail.com>
2025-10-05 16:04:46 +03:00

94 lines
2.5 KiB
JavaScript

const express = require('express');
const { User } = require('../models');
const packageJson = require('../../package.json');
const router = express.Router();
// Get version
router.get('/version', (req, res) => {
res.json({ version: packageJson.version });
});
// Get current user
router.get('/current_user', async (req, res) => {
try {
if (req.session && req.session.userId) {
const user = await User.findByPk(req.session.userId, {
attributes: [
'uid',
'email',
'language',
'appearance',
'timezone',
],
});
if (user) {
return res.json({ user });
}
}
res.json({ user: null });
} catch (error) {
console.error('Error fetching current user:', error);
res.status(500).json({ error: 'Internal server error' });
}
});
// Login
router.post('/login', async (req, res) => {
try {
const { email, password } = req.body;
if (!email || !password) {
return res.status(400).json({ error: 'Invalid login parameters.' });
}
const user = await User.findOne({ where: { email } });
if (!user) {
return res.status(401).json({ errors: ['Invalid credentials'] });
}
const isValidPassword = await User.checkPassword(
password,
user.password_digest
);
if (!isValidPassword) {
return res.status(401).json({ errors: ['Invalid credentials'] });
}
req.session.userId = user.id;
await new Promise((resolve, reject) => {
req.session.save((err) => {
if (err) reject(err);
else resolve();
});
});
res.json({
user: {
uid: user.uid,
email: user.email,
language: user.language,
appearance: user.appearance,
timezone: user.timezone,
},
});
} catch (error) {
console.error('Login error:', error);
res.status(500).json({ error: 'Internal server error' });
}
});
// Logout
router.get('/logout', (req, res) => {
req.session.destroy((err) => {
if (err) {
console.error('Logout error:', err);
return res.status(500).json({ error: 'Could not log out' });
}
res.json({ message: 'Logged out successfully' });
});
});
module.exports = router;