UNPKG

set-up-node-mvc

Version:

A NPM package for set up mvc architecture for node and express with selected language and database

127 lines (109 loc) 3.17 kB
// JavaScript template content const jsTemplates = { userController: ` const UserService = require('../services/userService'); const create = async (req, res) => { try { const response = await UserService.registerUser({ email: req.body.email, password: req.body.password }); return res.status(201).json({ success: true, message: 'Successfully created a new user', data: response, err: {} }); } catch (error) { return res.status(error.statusCode || 500).json({ message: error.message, data: {}, success: false, err: error.explanation || error }); } }; const signIn = async (req, res) => { try { const response = await UserService.loginUser(req.body.email, req.body.password); return res.status(200).json({ success: true, data: response, err: {}, message: 'Successfully signed in' }); } catch (error) { return res.status(error.statusCode || 500).json({ message: error.message, data: {}, success: false, err: error.explanation || error }); } }; module.exports = { create, signIn }; `, userService: ` const jwt = require('jsonwebtoken'); const bcrypt = require('bcrypt'); const UserRepository = require('../repositories/userRepository'); require('dotenv').config(); const JWT_KEY = process.env.JWT_KEY; const userRepository = new UserRepository(); const registerUser = async (userData) => { const existingUser = await userRepository.findUserByEmail(userData.email); if (existingUser) { throw new Error('User already exists'); } const hashedPassword = await bcrypt.hash(userData.password, 10); const newUser = await userRepository.createUser({ ...userData, password: hashedPassword }); return newUser; }; const loginUser = async (email, plainPassword) => { const user = await userRepository.findUserByEmail(email); if (!user) { throw new Error('User not found'); } const isMatch = await bcrypt.compare(plainPassword, user.password); if (!isMatch) { throw new Error('Invalid credentials'); } const token = jwt.sign({ id: user.id }, JWT_KEY, { expiresIn: '1h' }); return token; }; module.exports = { registerUser, loginUser }; `, userRepository: ` const { User } = require('../models/user'); const create = async (data) => { try { const user = await User.create(data); return user; } catch (error) { throw { error }; } }; const findUserByEmail = async (email) => { return await User.findOne({ where: { email } }); }; module.exports = { create, findUserByEmail }; `, userRoute: ` const express = require('express'); const { create, signIn } = require('../controllers/userController'); const router = express.Router(); router.post('/signup', create); router.post('/signin', signIn); module.exports = router; ` }; module.exports = jsTemplates;