Skip to content
Snippets Groups Projects
Commit e4ce716c authored by Zaman, Orangzaib (UG - Computer Science)'s avatar Zaman, Orangzaib (UG - Computer Science)
Browse files

Merge branch 'users-service' into 'develop'

Users service

See merge request !3
parents fc4bca84 d6b55719
No related branches found
No related tags found
2 merge requests!8CI/CD,!3Users service
CONNECTION_URL=MONGO_URL_HERE
SECRET_KEY=SECRET_KEY_HERE
\ No newline at end of file
import express from 'express';
import bcrypt from 'bcryptjs';
import jwt from 'jsonwebtoken';
import User from '../models/User.js';
import dotenv from 'dotenv';
dotenv.config();
const router = express.Router();
export const signin = async (req, res) => {
const { email, password } = req.body;
try {
const existingUser = await User.findOne({ email });
if (!existingUser) {
return res.status(404).json({ message: "User doesn't exist" });
}
const isPasswordCorrect = await bcrypt.compare(password, existingUser.password);
if (!isPasswordCorrect) {
return res.status(400).json({ message: "Password is incorrect" });
}
const token = jwt.sign({ email: existingUser.email, id: existingUser._id }, process.env.SECRET_KEY, { expiresIn: "1h"});
return res.status(200).json({user: existingUser, token});
} catch (error) {
res.status(500).json({ message: "Something went wrong" });
}
}
export const signup = async (req, res) => {
const { name, email, password } = req.body;
try {
const existingUser = await User.findOne({ email });
if (existingUser) {
return res.status(400).json({ message: "User already exists" });
}
const user = await User.create({ name, email, password });
return res.status(200).json(user);
} catch (error) {
return res.status(500).json({ message: "Something went wrong" });
}
}
export const checkUserEmail = async (req, res) => {
const { email } = req.params;
try {
const user = await User.findOne({ email });
return res.status(200).json(user);
} catch (error) {
res.status(500).json({ message: "Something went wrong" });
}
}
export const getUserById = async (req, res) => {
const { id } = req.params;
try {
const user = await User.findById(id);
return res.status(200).json(user);
} catch (error) {
res.status(500).json({ message: "Something went wrong" });
}
}
export default router;
\ No newline at end of file
import express from 'express';
import cors from 'cors';
import mongoose from 'mongoose';
import bodyParser from 'body-parser';
import dotenv from 'dotenv';
import userRoutes from './routes/users.js';
dotenv.config();
const app = express();
app.use(bodyParser.json({ limit: "30mb", extended: true }));
app.use(bodyParser.urlencoded({ limit: "30mb", extended: true }));
app.use(cors());
app.use("/user", userRoutes);
const PORT = 5001;
mongoose.connect(process.env.CONNECTION_URL, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => app.listen(PORT, "0.0.0.0", () => console.log(`Users service running on ${PORT}...`)))
.catch((error) => console.log(error.message));
mongoose.set("useFindAndModify", false);
\ No newline at end of file
import mongoose from 'mongoose';
const userSchema = mongoose.Schema({
name: { type: String, required: true },
email: { type: String, required: true },
password: { type: String, required: true },
id: { type: String },
})
var User = mongoose.model('User', userSchema);
export default User;
\ No newline at end of file
This diff is collapsed.
{
"name": "users-service",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"start": "node index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^0.21.1",
"bcryptjs": "^2.4.3",
"body-parser": "^1.19.0",
"cors": "^2.8.5",
"dotenv": "^8.2.0",
"express": "^4.17.1",
"jsonwebtoken": "^8.5.1",
"mongoose": "^5.12.3"
}
}
import express from 'express';
import { signin, signup, checkUserEmail, getUserById } from '../controllers/users.js';
const router = express.Router();
router.post('/signin', signin);
router.post('/signup', signup);
router.get('/user/check/:email', checkUserEmail);
router.get('/user/:id', getUserById);
export default router;
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment