Browse Source

Merge branch 'develop' into SwaggerFix

pull/58/head
dusan.lazarevic 3 years ago
parent
commit
7c5ca4d323
6 changed files with 36 additions and 30 deletions
  1. 1
    0
      .gitignore
  2. 0
    14
      src/database/models/user.js
  3. 8
    8
      src/endpoints/user.js
  4. 2
    2
      src/logging/loggerWinston.js
  5. 13
    6
      src/server.js
  6. 12
    0
      src/validators/users.js

+ 1
- 0
.gitignore View File

@@ -1,2 +1,3 @@
node_modules/
loggerFiles/
public/loggerFiles

+ 0
- 14
src/database/models/user.js View File

@@ -1,5 +1,4 @@
const mongoose = require('mongoose')
const Joi = require('joi')

const userSchema = new mongoose.Schema({
name: {
@@ -24,19 +23,6 @@ const userSchema = new mongoose.Schema({
}]
})

userSchema.statics.joiValidate = async function(obj) {
const schema = Joi.object({
name: Joi.string().min(2).required(),
password: Joi.string().min(8).regex(/[a-zA-Z0-9]{3,30}/).required(),
email: Joi.string().email().required(),
role: Joi.string()
})

const validation = schema.validate(obj);
return validation.error
}


// userSchema.pre('save', async function(next) {
// const user = this
// console.log('pre hash: ' + user.password)

+ 8
- 8
src/endpoints/user.js View File

@@ -1,16 +1,15 @@
const bcrypt = require("bcryptjs/dist/bcrypt")
const User = require("../database/models/user")
const { getUserValidator } = require("../validators/users")

const getUsers = async (req, res, next) => {
try {
const allUsers = await User.find({})
return res.status(200).send(allUsers)
} catch (e) {
next(e)
}
const allUsers = await User.find({})
return res.status(200).send(allUsers)
}

const getUser = async (req, res, next) => {
const result = getUserValidator.validate(req.body)
console.log(result)
try {
const id = req.params.id
if (!id) {
@@ -34,7 +33,7 @@ const createUser = async (req, res, next) => {
return res.status(400).send('Object cant be empty')
}

const err = await User.joiValidate(userModel)
const err = getUserValidator.validate(userModel).error
if (err) {
return res.status(401).send(err.message)
}
@@ -56,7 +55,8 @@ const updateUser = async (req, res, next) => {
if (Object.entries(objBody).length == 0) {
return res.status(400).send('Invalid input parameters')
}
const err = await User.joiValidate(objBody)

const err = getUserValidator.validate(objBody).error
if (err) {
return res.status(400).send(err.message)
}

+ 2
- 2
src/logging/loggerWinston.js View File

@@ -6,8 +6,8 @@ const loggerWinston = winston.createLogger({
format: winston.format.json(),
defaultMeta: { service: 'user-service' },
transports: [
new winston.transports.File({ filename: 'loggerFiles/error.log', level: 'error' }),
new winston.transports.File({ filename: 'loggerFiles/all.log', level: 'silly' }),
new winston.transports.File({ filename: '../public/loggerFiles/error.log', level: 'error' }),
new winston.transports.File({ filename: '../public/loggerFiles/all.log', level: 'silly' }),
],
});


+ 13
- 6
src/server.js View File

@@ -1,7 +1,7 @@
const config = require('config') //Default configuration file
const express = require('express')
const app = express()
const path = require('path')
const port = process.env.NODE_ENV === 'production' ? 80 : 3000
const port = process.env.NODE_ENV === 'production' ? 80 : 3001
require('./database/mongoose')
const userRouter = require('./routes/user')
const tokenRouter = require('./routes/token')
@@ -11,14 +11,24 @@ const { errorLogger, errorResponder } = require('./middleware/errorHandling.js')
const requestLogging = require('./middleware/requestLogging.js')
const cors = require('cors') //Cross-origin resource sharing
const helmet = require('helmet') //Basic protection against attacks like XSS
const config = require('config') //Default configuration file

const fs = require('fs')
const path = require('path')
const routesDirectory = path.resolve(__dirname) + '\\routes\\'
// console.log(config.util.getEnv('NODE_ENV'))

app.use(errorLogger);
app.use(errorResponder);
app.use(express.json())
app.use('/api-docs', swaggerUI.serve, swaggerUI.setup(docs))
app.use(requestLogging)
app.use(cors())
app.use(helmet())

fs.readdirSync(routesDirectory).forEach(route => {
app.use(require(routesDirectory + route))
})

app.use(userRouter)
app.use(tokenRouter)

@@ -30,9 +40,6 @@ app.get('/', (req, res) => {
}
})

app.use(errorLogger);
app.use(errorResponder);

app.listen(port, () => {
console.log('Server is up on port ' + port)
})

+ 12
- 0
src/validators/users.js View File

@@ -0,0 +1,12 @@
const Joi = require("joi");

const schema = {
getUserValidator: Joi.object({
name: Joi.string().min(2).required(),
password: Joi.string().min(8).regex(/[a-zA-Z0-9]{3,30}/).required(),
email: Joi.string().email().required(),
role: Joi.string()
})
}

module.exports = schema

Loading…
Cancel
Save