const express = require('express'); const router = express.Router(); const { generateToken } = require('../middleware/auth'); // Mock user storage (в продакшене использовать базу данных) const users = new Map(); // Register router.post('/register', async (req, res) => { try { const { email, password, username } = req.body; if (!email || !password || !username) { return res.status(400).json({ error: 'Email, password and username are required' }); } if (users.has(email)) { return res.status(409).json({ error: 'User already exists' }); } const userId = Date.now().toString(); const user = { id: userId, email, username, password, // В продакшене хешировать! createdAt: new Date().toISOString() }; users.set(email, user); const token = generateToken(user); res.status(201).json({ message: 'User registered successfully', token, user: { id: user.id, email: user.email, username: user.username } }); } catch (error) { res.status(500).json({ error: error.message }); } }); // Login router.post('/login', async (req, res) => { try { const { email, password } = req.body; if (!email || !password) { return res.status(400).json({ error: 'Email and password are required' }); } const user = users.get(email); if (!user || user.password !== password) { return res.status(401).json({ error: 'Invalid credentials' }); } const token = generateToken(user); res.json({ message: 'Login successful', token, user: { id: user.id, email: user.email, username: user.username } }); } catch (error) { res.status(500).json({ error: error.message }); } }); // Validate token router.get('/validate', async (req, res) => { const authHeader = req.headers['authorization']; const token = authHeader && authHeader.split(' ')[1]; if (!token) { return res.status(401).json({ valid: false, error: 'No token provided' }); } try { const jwt = require('jsonwebtoken'); const decoded = jwt.verify(token, process.env.JWT_SECRET || 'your-super-secret-jwt-key'); res.json({ valid: true, user: decoded }); } catch (error) { res.status(403).json({ valid: false, error: 'Invalid token' }); } }); module.exports = router;