Przeglądaj źródła

Merge branch 'develop' into SwaggerFix

pull/58/head
dusan.lazarevic 3 lat temu
rodzic
commit
7c5ca4d323

+ 1
- 0
.gitignore Wyświetl plik

node_modules/ node_modules/
loggerFiles/ loggerFiles/
public/loggerFiles

+ 0
- 14
src/database/models/user.js Wyświetl plik

const mongoose = require('mongoose') const mongoose = require('mongoose')
const Joi = require('joi')


const userSchema = new mongoose.Schema({ const userSchema = new mongoose.Schema({
name: { name: {
}] }]
}) })


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) { // userSchema.pre('save', async function(next) {
// const user = this // const user = this
// console.log('pre hash: ' + user.password) // console.log('pre hash: ' + user.password)

+ 8
- 8
src/endpoints/user.js Wyświetl plik

const bcrypt = require("bcryptjs/dist/bcrypt") const bcrypt = require("bcryptjs/dist/bcrypt")
const User = require("../database/models/user") const User = require("../database/models/user")
const { getUserValidator } = require("../validators/users")


const getUsers = async (req, res, next) => { 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 getUser = async (req, res, next) => {
const result = getUserValidator.validate(req.body)
console.log(result)
try { try {
const id = req.params.id const id = req.params.id
if (!id) { if (!id) {
return res.status(400).send('Object cant be empty') return res.status(400).send('Object cant be empty')
} }


const err = await User.joiValidate(userModel)
const err = getUserValidator.validate(userModel).error
if (err) { if (err) {
return res.status(401).send(err.message) return res.status(401).send(err.message)
} }
if (Object.entries(objBody).length == 0) { if (Object.entries(objBody).length == 0) {
return res.status(400).send('Invalid input parameters') return res.status(400).send('Invalid input parameters')
} }
const err = await User.joiValidate(objBody)

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

+ 2
- 2
src/logging/loggerWinston.js Wyświetl plik

format: winston.format.json(), format: winston.format.json(),
defaultMeta: { service: 'user-service' }, defaultMeta: { service: 'user-service' },
transports: [ 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 Wyświetl plik

const config = require('config') //Default configuration file
const express = require('express') const express = require('express')
const app = 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') require('./database/mongoose')
const userRouter = require('./routes/user') const userRouter = require('./routes/user')
const tokenRouter = require('./routes/token') const tokenRouter = require('./routes/token')
const requestLogging = require('./middleware/requestLogging.js') const requestLogging = require('./middleware/requestLogging.js')
const cors = require('cors') //Cross-origin resource sharing const cors = require('cors') //Cross-origin resource sharing
const helmet = require('helmet') //Basic protection against attacks like XSS 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(express.json())
app.use('/api-docs', swaggerUI.serve, swaggerUI.setup(docs)) app.use('/api-docs', swaggerUI.serve, swaggerUI.setup(docs))
app.use(requestLogging) app.use(requestLogging)
app.use(cors()) app.use(cors())
app.use(helmet()) app.use(helmet())

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

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


} }
}) })


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

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

+ 12
- 0
src/validators/users.js Wyświetl plik

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

Ładowanie…
Anuluj
Zapisz