Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const mongoose = require('mongoose');
- const jwt = require('jsonwebtoken');
- const config = require('config');
- const User = require('../model/user');
- const signUp = async (req, res) => {
- try {
- // You may remove this if statement by adding data validation layer at routing
- if (req.body.username && req.body.email && req.body.password) {
- // This code should go in route validation, this is making business logic bloated
- if (req.body.password.length < 6) {
- return res.status(400).json({
- message: 'Your password should be minimum 6 character long!',
- });
- }
- const emailCheck = await User.findOne({ email: req.body.email });
- if (emailCheck) {
- return res.status(409).json({
- message: 'This email already exists! Please try another.',
- });
- }
- const usernameCheck = await User.findOne({ username: req.body.username });
- if (usernameCheck) {
- return res.status(409).json({
- message: 'This username already exists! Please try another.',
- });
- }
- const user = await new User({
- // Mongoose will add _id for you automatically
- username: req.body.username,
- email: req.body.email,
- // Don't forget to hash your password
- password: req.body.password,
- }).save();
- if (user) {
- const token = jwt.sign(
- {
- username: req.body.username,
- userId: user._id,
- },
- config.get('secret'),
- {
- expiresIn: 60 * 60,
- },
- );
- return res.status(201).json({
- message: 'User created successfully!',
- user,
- token,
- });
- }
- }
- return res.status(400).json({
- message:
- 'Seems you entered something invalid, Please provide all nedded information correctly!',
- });
- } catch (err) {
- return res.status(500).json({
- message: 'Internal server error',
- error: err.message,
- });
- }
- };
Add Comment
Please, Sign In to add comment