aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorLibravatarLibravatar Biswakalyan Bhuyan <biswa@surgot.in> 2024-07-18 15:49:21 +0530
committerLibravatarLibravatar Biswakalyan Bhuyan <biswa@surgot.in> 2024-07-18 15:49:21 +0530
commitcf0421c94b8ca14e819bad45e7db6875b92d547b (patch)
tree8deb4de15449bc2cf24c88950490ce60b5f6aaa8 /server
parentbe93c42fc010e7309e9e10d0431418ae5e7dbb93 (diff)
downloadadmin-panel-cf0421c94b8ca14e819bad45e7db6875b92d547b.tar.gz
admin-panel-cf0421c94b8ca14e819bad45e7db6875b92d547b.tar.bz2
admin-panel-cf0421c94b8ca14e819bad45e7db6875b92d547b.zip
added and setup dashboard login auth and many more
Diffstat (limited to 'server')
-rw-r--r--server/config/db.js2
-rw-r--r--server/models/User.js14
-rw-r--r--server/routes/auth.js63
-rw-r--r--server/server.js20
4 files changed, 53 insertions, 46 deletions
diff --git a/server/config/db.js b/server/config/db.js
index c1f628a..9ae3c6b 100644
--- a/server/config/db.js
+++ b/server/config/db.js
@@ -1,4 +1,6 @@
const mongoose = require('mongoose');
+require('dotenv').config();
+
const connectDB = async () => {
try {
await mongoose.connect(process.env.MONGO_URI, {
diff --git a/server/models/User.js b/server/models/User.js
index 6773c64..968673e 100644
--- a/server/models/User.js
+++ b/server/models/User.js
@@ -1,7 +1,15 @@
const mongoose = require('mongoose');
+
const UserSchema = new mongoose.Schema({
- username: { type: String, reauired: true, unique: true },
- password: { type: String, required: true },
- role: { type: String, default: 'admin' },
+ email: {
+ type: String,
+ required: true,
+ unique: true,
+ },
+ password: {
+ type: String,
+ required: true,
+ },
});
+
module.exports = mongoose.model('User', UserSchema);
diff --git a/server/routes/auth.js b/server/routes/auth.js
index 3fb0986..04a9d5b 100644
--- a/server/routes/auth.js
+++ b/server/routes/auth.js
@@ -1,57 +1,46 @@
const express = require('express');
const bcrypt = require('bcryptjs');
-const jwt = require('jsonwebtoken');
+const jwt = require('jwt-simple');
const User = require('../models/User');
+require('dotenv').config();
+
const router = express.Router();
+const secret = process.env.JWT_SECRET;
-// Register
+// Register new user
router.post('/register', async (req, res) => {
- const { username, password } = req.body;
+ const { email, password } = req.body;
try {
- let user = await User.findOne({ username });
- if (user) {
- return res.status(400).json({ msg: 'User already exists' });
- }
- user = new User({
- username,
- password,
- });
+ const user = await User.findOne({ email });
+ if (user) return res.status(400).json({ msg: 'User already exists' });
+
+ const newUser = new User({ email, password });
const salt = await bcrypt.genSalt(10);
- user.password = await bcrypt.hash(password, salt);
- await user.save();
- res.status(200).send('User registered');
+ newUser.password = await bcrypt.hash(password, salt);
+ await newUser.save();
+
+ const payload = { id: newUser.id };
+ const token = jwt.encode(payload, secret);
+ res.json({ token });
} catch (err) {
console.error(err.message);
res.status(500).send('Server error');
}
});
-// Login
+// Login user
router.post('/login', async (req, res) => {
- const { username, password } = req.body;
+ const { email, password } = req.body;
try {
- const user = await User.findOne({ username });
- if (!user) {
- return res.status(400).json({ msg: 'Invalid credentials' });
- }
+ const user = await User.findOne({ email });
+ if (!user) return res.status(400).json({ msg: 'Invalid credentials' });
+
const isMatch = await bcrypt.compare(password, user.password);
- if (!isMatch) {
- return res.status(400).json({ msg: 'Invalid credentials' });
- }
- const payload = {
- user: {
- id: user.id,
- },
- };
- jwt.sign(
- payload,
- process.env.JWT_SECRET,
- { expiresIn: '1h' },
- (err, token) => {
- if (err) throw err;
- res.json({ token });
- }
- );
+ if (!isMatch) return res.status(400).json({ msg: 'Invalid credentials' });
+
+ const payload = { id: user.id };
+ const token = jwt.encode(payload, secret);
+ res.json({ token });
} catch (err) {
console.error(err.message);
res.status(500).send('Server error');
diff --git a/server/server.js b/server/server.js
index caf4d9c..fcd02f6 100644
--- a/server/server.js
+++ b/server/server.js
@@ -1,14 +1,22 @@
const express = require('express');
-const connectDB = require('./config/db');
const cors = require('cors');
-const app = express();
+const bodyParser = require('body-parser');
+const connectDB = require('./config/db');
+const authRoutes = require('./routes/auth');
+
require('dotenv').config();
-connectDB();
+const app = express();
+const PORT = process.env.PORT || 8080;
+
+// Middleware
app.use(cors());
-app.use(express.json());
+app.use(bodyParser.json());
-app.use('/api/auth', require('./routes/auth'));
+// Connect to MongoDB
+connectDB();
+
+// Routes
+app.use('/api/auth', authRoutes);
-const PORT = process.env.PORT || 8080;
app.listen(PORT, () => console.log(`Server started on port ${PORT}`));