Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const express = require('express');
- const bodyParser = require('body-parser');
- const storage = require('./modules/storage.js');
- const check = require('./modules/auth.js');
- const fileload = require('express-fileupload');
- let routeAdd = require('./routes/add');
- let routeAutos = require('./routes/autos');
- let routeAuto = require('./routes/auto');
- let routes = require('./routes/index');
- let routerReg = require('./routes/register');
- let rourtAuth = require('./routes/auth');
- const cookieParser = require('cookie-parser');
- const session = require('express-session');
- const crypto = require('crypto');
- const passport = require('passport');
- const LocalStrategy = require('passport-local').Strategy;
- let path = require('path');
- let auth = require('basic-auth');
- const app = express();
- app.set('view engine', 'ejs');
- app.use(express.static('public'));
- app.use(bodyParser.urlencoded({ extended: false }));
- app.use(bodyParser.json());
- app.use(fileload());
- app.use(cookieParser());
- app.use(session({
- secret: 'SEGReT$25_',
- resave: false,
- saveUninitialized: true
- }));
- app.use(passport.initialize());
- app.use(passport.session());
- // app.use(function (req, res, next) {
- // res.status(404);
- // // respond with json
- // if (req.accepts('json')) {
- // res.setHeader('Content-Type', 'application/json');
- // res.send(JSON.stringify({ "message": "Not found", "documentation_url": "docs/api/v1" }, null, 2));
- // return;
- // }
- // });
- const sendFileOpts = {
- root: path.join(__dirname, 'views')
- };
- app.use('/', routes);
- app.use('/', routerReg);
- app.use('/', rourtAuth);
- app.use('/', routeAdd);
- app.use('/', routeAutos);
- app.use('/', routeAuto);
- const serverSalt = "45%sAlT_";
- function sha512(password, salt) {
- const hash = crypto.createHmac('sha512', salt);
- hash.update(password);
- const value = hash.digest('hex');
- return {
- salt: salt,
- passwordHash: value
- };
- };
- function basicAuth(callback, param, req, res) {
- let credentials = auth(req);
- if (credentials) {
- storage.userGetByUsername(credentials.name)
- .then(() => {
- callback(param);
- })
- .catch(() => {
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify({ "message": "Invalid username or password", "documentation_url": "docs/api/v1" }, null, 2));
- });
- } else {
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify({ "message": "Required auth", "documentation_url": "docs/api/v1" }, null, 2));
- }
- }
- app.get('/api/v1/users',
- (req, res) => {
- function getAllUsers() {
- storage.usersGetAll()
- .then(users => {
- let outUsers = [];
- for (let user of users)
- outUsers.push({
- "id": user._id,
- "username": user.username,
- "role": user.role,
- "api_url": "/api/v1/users/" + user.username
- });
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify(outUsers, null, 2));
- })
- }
- basicAuth(getAllUsers, null, req, res);
- });
- app.get('/api/v1/cars',
- (req, res) => {
- function getAllCars() {
- storage.getAll()
- .then(cars => {
- let outCars = [];
- for (let car of cars)
- outCars.push({
- "id": car._id,
- "model": car.model,
- "size_class": car.size_class,
- "doors": car.doors,
- "engine_volume": car.engine_volume,
- "engine_type": car.engine_type,
- "start_date": car.start_date,
- "api_url": "/api/v1/cars/" + car._id
- });
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify(outCars, null, 2));
- });
- }
- basicAuth(getAllCars, null, req, res);
- });
- app.post('/api/v1/cars/delete/:id',
- check.checkAdmin,
- (req, res) => {
- const id = parseInt(req.params.auto_id);
- storage.remove(id).then(() => {
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify({ "message": "Object deleted", "documentation_url": "docs/api/v1" }, null, 2));
- })
- });
- app.get('/api/v1/cars/:id',
- (req, res) => {
- function getCar(param) {
- storage.getById(param)
- .then(car => {
- let outCar = {
- "id": car._id,
- "model": car.model,
- "size_class": car.size_class,
- "doors": car.doors,
- "engine_volume": car.engine_volume,
- "engine_type": car.engine_type,
- "start_date": car.start_date,
- "api_url": "/api/v1/cars/" + car._id
- };
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify(outCar, null, 2));
- })
- .catch(error => {
- console.log(error);
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify({ "message": "404 not found", "documentation_url": "docs/api/v1" }, null, 2));
- });
- }
- basicAuth(getCar, req.params.id, req, res);
- });
- app.get('/api/v1/users/:username',
- (req, res) => {
- function getUser(param) {
- storage.userGetByUsername(param)
- .then(user => {
- let outuser = {
- "id": user._id,
- "username": user.username,
- "role": user.role,
- "api_url": "/api/v1/users/" + user.username
- };
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify(outuser, null, 2));
- })
- .catch(error => {
- console.log(error);
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify({ "message": "404 not found", "documentation_url": "docs/api/v1" }, null, 2));
- });
- }
- basicAuth(getUser, req.params.username, req, res);
- });
- app.get('/docs/api/v1',
- (req, res) => {
- res.sendFile('api.html', sendFileOpts);
- });
- app.use(function (req, res, next) {
- res.status(404);
- // respond with json
- if (req.accepts('json')) {
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify({ "message": "Not found", "documentation_url": "docs/api/v1" }, null, 2));
- return;
- }
- });
- app.listen(process.env.PORT || 5000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement