UNPKG

node-express-mongodb-jwt-rest-api-skeleton

Version:

Node.js express.js MongoDB JWT REST API - This is a basic API REST skeleton written on JavaScript using async/await. Great for building a starter web API for your front-end (Android, iOS, Vue, react, angular, or anything that can consume an API)

41 lines (36 loc) 1.12 kB
const { matchedData } = require('express-validator') const { findUser, userIsBlocked, checkLoginAttemptsAndBlockExpires, passwordsDoNotMatch, saveLoginAttemptsToDB, saveUserAccessAndReturnToken } = require('./helpers') const { handleError } = require('../../middleware/utils') const { checkPassword } = require('../../middleware/auth') /** * Login function called by route * @param {Object} req - request object * @param {Object} res - response object */ const login = async (req, res) => { try { const data = matchedData(req) const user = await findUser(data.email) await userIsBlocked(user) await checkLoginAttemptsAndBlockExpires(user) const isPasswordMatch = await checkPassword(data.password, user) if (!isPasswordMatch) { handleError(res, await passwordsDoNotMatch(user)) } else { // all ok, register access and return token user.loginAttempts = 0 await saveLoginAttemptsToDB(user) res.status(200).json(await saveUserAccessAndReturnToken(req, user)) } } catch (error) { handleError(res, error) } } module.exports = { login }