/
morlli
/
zavav
Обзор
Документация
Войти
/
morlli
/
zavav
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
server/controllers/authController.js
117 строк
3 KB
morlli
34
28 май 2026, 19:48
28 май 2026, 19:48
3299f08
Код
Авторство
О чём код?
const User = require('../models/User'); const jwt = require('jsonwebtoken'); const bcrypt = require('bcrypt'); const validator = require('validator'); // Generate JWT token const generateToken = (user) => { return jwt.sign( { id: user._id, email: user.email, role: user.role }, process.env.JWT_SECRET || 'your-secret-key', { expiresIn: '7d' } ); }; // Register new user exports.register = async (req, res) => { try { const { name, email, password, role, phone, address } = req.body; // Validate input if (!name || !email || !password) { return res.status(400).json({ message: 'Name, email and password are required' }); } if (!validator.isEmail(email)) { return res.status(400).json({ message: 'Please provide a valid email' }); } if (password.length < 6) { return res.status(400).json({ message: 'Password must be at least 6 characters long' }); } // Check if user already exists const existingUser = await User.findOne({ email }); if (existingUser) { return res.status(400).json({ message: 'User with this email already exists' }); } // Create new user const user = new User({ name, email, password, role: role || 'user', phone, address }); await user.save(); // Generate token const token = generateToken(user); res.status(201).json({ message: 'User registered successfully', token, user: { id: user._id, name: user.name, email: user.email, role: user.role, phone: user.phone, address: user.address } }); } catch (error) { res.status(500).json({ message: 'Server error', error: error.message }); } }; // Login user exports.login = async (req, res) => { try { const { email, password } = req.body; // Validate input if (!email || !password) { return res.status(400).json({ message: 'Email and password are required' }); } // Find user by email const user = await User.findOne({ email }); if (!user) { return res.status(401).json({ message: 'Invalid credentials' }); } // Check password const isMatch = await user.comparePassword(password); if (!isMatch) { return res.status(401).json({ message: 'Invalid credentials' }); } // Generate token const token = generateToken(user); res.json({ message: 'Login successful', token, user: { id: user._id, name: user.name, email: user.email, role: user.role, phone: user.phone, address: user.address } }); } catch (error) { res.status(500).json({ message: 'Server error', error: error.message }); } };