Skip to content

Commit

Permalink
Merge pull request #1 from sonicemma/emma-atanasova
Browse files Browse the repository at this point in the history
deploy
  • Loading branch information
sonicemma committed Apr 30, 2020
2 parents 9f0f6be + b65a18e commit d000a9a
Show file tree
Hide file tree
Showing 16 changed files with 7,295 additions and 1 deletion.
1 change: 1 addition & 0 deletions .gitignore
@@ -0,0 +1 @@
node_modules/
3 changes: 2 additions & 1 deletion README.md
@@ -1 +1,2 @@
# back-end
# back-end
# emma-atanasova
3 changes: 3 additions & 0 deletions api/secrets.js
@@ -0,0 +1,3 @@
module.exports = {
jwtSecret: process.env.JWT_SECRET || "password",
};
21 changes: 21 additions & 0 deletions api/server.js
@@ -0,0 +1,21 @@
const express = require('express');
const helmet = require('helmet');
const cors = require('cors');

const authRouter = require ('../auth/auth-router');
const songRouter = require('../songs/songs-router');

const server = express();

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

server.use('/api/auth', authRouter);
server.use('/api/songs', songRouter);

server.get('/', (req, res) => {
res.json({api: 'works'});
});

module.exports = server;
22 changes: 22 additions & 0 deletions auth/auth-middleware.js
@@ -0,0 +1,22 @@
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) {
jwt.verify(token, secret, (error, decodedToken) => {
if (error) {
res.status(401).json({ message: 'nice try'})
} else {
req.decodedToken = decodedToken;
next();
}
});
} else {
res.status(400).json({message:'error'});
}
};
58 changes: 58 additions & 0 deletions auth/auth-router.js
@@ -0,0 +1,58 @@
const router = require('express').Router();
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');

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

function generateToken(user) {
const payload = {
userId: user.id,
username: user.email,
};
const secret = secrets.jwtSecret;
const options = {
expiresIn: '1d',
};
return jwt.sign(payload, secret, options);
}

router.post('/register', (req, res) => {
let user = req.body;

const rounds = process.env.HASH_ROUNDS || 8;

const hash = bcrypt.hashSync(user.password, rounds);

user.password = hash;

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

router.post('/login', (req, res) => {
let { email, password } = req.body;

Users.findBy({email})
.then(([user]) => {
if (user && bcrypt.compareSync(password, user.password)) {
const token = generateToken(user);

res.status(200).json({message: 'works', token});
} else {
res.status(401).json({message: 'wrong'});
}
})
.catch(err => {
res.status(500).json({message: err.message});
});
});

module.exports = router;

module.exports = router;
Binary file added database/data.db3
Binary file not shown.
5 changes: 5 additions & 0 deletions database/dbConfig.js
@@ -0,0 +1,5 @@
const knex = require('knex');

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

module.exports = knex(knexConfig.development);
28 changes: 28 additions & 0 deletions database/migrations/20200429095932_data.js
@@ -0,0 +1,28 @@
exports.up = function(knex) {
return knex.schema
.createTable('users', tbl => {
tbl.increments();
tbl.string('email', 128).notNullable().unique();
tbl.string('password', 128).notNullable();
})

.createTable('songs', tbl => {
tbl.increments();
tbl.string('song_info').notNullable();
tbl.string('song_id').notNullable();
})

.createTable('saveSong', tbl => {
tbl.increments();
tbl.string('song_id').notNullable().references('song_id').inTable('song').onDelete('CASCADE').onUpdate('CASCADE');
tbl.string('song_info').notNullable().references('song_info').inTable('song').onDelete('CASCADE').onUpdate('CASCADE');
})
};

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

7 changes: 7 additions & 0 deletions index.js
@@ -0,0 +1,7 @@
const server = require('./api/server');

const port = process.env.PORT || 5000;

server.listen(port, () => {
console.log(`Listening on port ${port}`);
});
12 changes: 12 additions & 0 deletions knexfile.js
@@ -0,0 +1,12 @@
module.exports = {
development: {
client: 'sqlite3',
connection: { filename: './database/data.db3' },
useNullAsDefault: true,
migrations: {
directory: './database/migrations',
tableName: 'dbmigrations',
},
seeds: { directory: './database/seeds' },
},
};

0 comments on commit d000a9a

Please sign in to comment.