Untitled
unknown
plain_text
a year ago
1.8 kB
4
Indexable
const express = require('express');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
const mongoose = require('mongoose');
const dotenv = require('dotenv');
const cors = require('cors');
dotenv.config();
const app = express();
app.use(express.json());
app.use(cors());
// MongoDB connection (replace with your MongoDB URI)
mongoose.connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('MongoDB connected'))
.catch(err => console.log(err));
// User Schema
const userSchema = new mongoose.Schema({
email: { type: String, required: true, unique: true },
password: { type: String, required: true }
});
const User = mongoose.model('User', userSchema);
// Register API
app.post('/api/register', async (req, res) => {
const { email, password } = req.body;
try {
// Check if the user already exists
const existingUser = await User.findOne({ email });
if (existingUser) {
return res.status(400).json({ message: 'User already exists' });
}
// Hash the password
const salt = await bcrypt.genSalt(10);
const hashedPassword = await bcrypt.hash(password, salt);
// Create a new user
const newUser = new User({
email,
password: hashedPassword
});
await newUser.save();
// Generate JWT
const token = jwt.sign(
{ userId: newUser._id, email: newUser.email },
process.env.JWT_SECRET,
{ expiresIn: '1h' }
);
res.status(201).json({ message: 'User registered successfully', token });
} catch (err) {
res.status(500).json({ message: 'Error registering user' });
}
});
// Start the server
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
Editor is loading...
Leave a Comment