Skip to content

Commit

Permalink
initial endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
Neel Mazumdar committed May 21, 2020
1 parent e43e7a4 commit d6e114f
Show file tree
Hide file tree
Showing 4,186 changed files with 392,687 additions and 0 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
3 changes: 3 additions & 0 deletions api/secrets.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
jwtSecret: process.env.JWT_SECRET || "keep it secret, keep it safe!",
};
25 changes: 25 additions & 0 deletions api/server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
const express = require('express');
const cors = require('cors');
const helmet = require('helmet');

const authenticate = require('../auth/authenticate-middleware.js');
const authRouter = require('../auth/auth-router.js');
const usersRouter = require('../users/users-router.js');
//const productsRouter = require('../products/products-router.js');

const server = express();

server.use(helmet());
server.use(cors());
server.use(express.json());

server.use('/api/auth', authRouter);
server.use('/api/users', authenticate, usersRouter);
//server.use('/api/products', productsRouter);


server.get("/", (req, res) => {
res.status(200).json({ api: "up" });
});

module.exports = server;
68 changes: 68 additions & 0 deletions auth/auth-router.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
const router = require('express').Router();
const bcrypt = require("bcryptjs");
const jwt = require("jsonwebtoken");

const Users = require("../users/users-model.js");
const secrets = require("../api/secrets.js");

//const validateUser = require("../middleware/validateUser");

router.post('/register', (req, res) => {

let user = req.body; // username, password
const rounds = process.env.HASH_ROUNDS || 14;
const hash = bcrypt.hashSync(user.password, rounds);


user.password = hash;

Users.add(user)
.then(saved => {
res.status(201).json(saved);
})
.catch(error => {
console.log(error.message);
res.status(500).json({ errorMessage: error.message });
});
});

router.post('/login', (req, res) => {

let { username, password } = req.body;


Users.findBy({ username })
.then(([user]) => {


if (user && bcrypt.compareSync(password, user.password)) {

const token = generateToken(user);


res.status(200).json({ message: "Welcome!", token, id: user.id });
} else {
res.status(401).json({ message: "You cannot pass!" });
}
})
.catch(error => {
console.log(error);
res.status(500).json({ errorMessage: error.message });
});
});

function generateToken(user) {

const payload = {
userId: user.id,
username: user.username,
};
const secret = secrets.jwtSecret;
const options = {
expiresIn: "1d",
};

return jwt.sign(payload, secret, options);
}

module.exports = router;
26 changes: 26 additions & 0 deletions auth/authenticate-middleware.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
const jwt = require("jsonwebtoken");
const secrets = require("../api/secrets.js");

module.exports = (req, res, next) => {
const token = req.headers.authorization;

const secret = secrets.jwtSecret;

if (token) {
// verify that the token is valid
jwt.verify(token, secret, (error, decodedToken) => {
// if everything is good with the token, the error will be undefined
if (error) {
res.status(401).json({ you: "shall not pass!" });
} else {
req.decodedToken = decodedToken;

next();
}
});
} else {
res.status(400).json({ message: "Please provide credentials" });
}

};

Binary file added data/auth.db3
Binary file not shown.
7 changes: 7 additions & 0 deletions data/db-Config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const knex = require('knex');

const knexConfig = require('../knexfile.js');

const environment = process.env.DB_ENV || "development"

module.exports = knex(knexConfig[environment]);
6 changes: 6 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const server = require('./api/server.js');

const PORT = process.env.PORT || 4000;
server.listen(PORT, () => {
console.log(`\n=== Server listening on port ${PORT} ===\n`);
});
41 changes: 41 additions & 0 deletions knexfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
// Update with your config settings.

module.exports = {

development: {
client: 'sqlite3',
useNullAsDefault: true,
connection: {
filename: './data/auth.db3'
}
},

staging: {
client: 'postgresql',
connection: {
database: 'my_db',
user: 'username',
password: 'password'
},
pool: {
min: 2,
max: 10
},
migrations: {
tableName: 'knex_migrations'
}
},

production: {
client: 'pg',
connection: process.env.DATABASE_URL,
pool: {
min: 2,
max: 10
},
migrations: {
directory: './data/migrations'
}
}

};
16 changes: 16 additions & 0 deletions migrations/20200520183126_add_users.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@

exports.up = function(knex) {
return knex.schema
.createTable('users', users=>{
users.increments();
users.string('username', 255).notNullable().unique();
users.string('password', 255).notNullable();
users.string('email').notNullable();
})
};

exports.down = function(knex) {
return knex.schema
.dropTableIfExists('users');

};
15 changes: 15 additions & 0 deletions node_modules/.bin/atob

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions node_modules/.bin/atob.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions node_modules/.bin/atob.ps1

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions node_modules/.bin/detect-libc

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions node_modules/.bin/detect-libc.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions node_modules/.bin/detect-libc.ps1

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions node_modules/.bin/is-ci

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions node_modules/.bin/is-ci.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions node_modules/.bin/is-ci.ps1

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions node_modules/.bin/knex

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions node_modules/.bin/knex.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit d6e114f

Please sign in to comment.