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)
43 lines (40 loc) • 1.11 kB
JavaScript
const UserAccess = require('../../../models/userAccess')
const { setUserInfo } = require('./setUserInfo')
const { generateToken } = require('./generateToken')
const {
getIP,
getBrowserInfo,
getCountry,
buildErrObject
} = require('../../../middleware/utils')
/**
* Saves a new user access and then returns token
* @param {Object} req - request object
* @param {Object} user - user object
*/
const saveUserAccessAndReturnToken = (req = {}, user = {}) => {
return new Promise((resolve, reject) => {
const userAccess = new UserAccess({
email: user.email,
ip: getIP(req),
browser: getBrowserInfo(req),
country: getCountry(req)
})
userAccess.save(async (err) => {
try {
if (err) {
return reject(buildErrObject(422, err.message))
}
const userInfo = await setUserInfo(user)
// Returns data with access token
resolve({
token: generateToken(user._id),
user: userInfo
})
} catch (error) {
reject(error)
}
})
})
}
module.exports = { saveUserAccessAndReturnToken }