Skip to content

Commit 9bf0bb7

Browse files
committed
set up protected routes
1 parent bb4f0b8 commit 9bf0bb7

File tree

5 files changed

+66
-27
lines changed

5 files changed

+66
-27
lines changed

api/server.js

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
1-
const express = require("express");
2-
const configureMiddleware = require("./middleware.js");
3-
const forms = require("../forms/forms-routes.js");
4-
const users = require("../user/user-routes.js");
5-
const departments = require("../departments/departments-routes.js");
6-
const defaultRules = require("../form_rules/rules-default-routes.js");
7-
const rules = require("../form_rules/rules-routes.js");
8-
const fields = require("../form_fields/form-fields-routes");
1+
const express = require('express')
2+
const configureMiddleware = require('./middleware.js')
3+
const forms = require('../forms/forms-routes.js')
4+
const users = require('../user/user-routes.js')
5+
const departments = require('../departments/departments-routes.js')
6+
const defaultRules = require('../form_rules/rules-default-routes.js')
7+
const rules = require('../form_rules/rules-routes.js')
8+
const fields = require('../form_fields/form-fields-routes')
9+
const restricted = require('../auth/restrictedMiddleware.js')
910

10-
const server = express();
11+
const server = express()
1112

12-
configureMiddleware(server);
13+
configureMiddleware(server)
1314

14-
server.use(express.json());
15+
server.use(express.json())
1516

16-
server.get("/", (req, res) => {
17-
res.status(200).send("Hello Earthling");
18-
});
17+
server.get('/', (req, res) => {
18+
res.status(200).send('Hello Earthling')
19+
})
1920

20-
server.use("/api/users", users);
21-
server.use("/api/forms", forms);
22-
server.use("/api/fields", fields);
23-
server.use("/api/departments", departments);
24-
server.use("/api/rules", defaultRules, rules);
21+
server.use('/api/users', users)
22+
server.use('/api/forms', restricted, forms)
23+
server.use('/api/fields', restricted, fields)
24+
server.use('/api/departments', restricted, departments)
25+
server.use('/api/rules', restricted, defaultRules, rules)
2526

26-
module.exports = server;
27+
module.exports = server

auth/restrictedMiddleware.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
const jwt = require('jsonwebtoken')
2+
const secret = require('./secret.js')
3+
4+
module.exports = (req, res, next) => {
5+
const token = req.headers.authorization
6+
7+
if (token) {
8+
jwt.verify(token, secret.jwtSecret, (err, decodedToken) => {
9+
if (err) {
10+
res.status(401).json({ message: 'Invalid Token.' })
11+
} else {
12+
req.decodedJwt = decodedToken
13+
next()
14+
}
15+
})
16+
} else {
17+
res.status(401).json({ message: 'No token provided. Please log in.' })
18+
}
19+
}

auth/secret.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = {
2+
jwtSecret: process.env.JWT_SECRET || 'Super Secret Secret'
3+
}

user/user-model.js

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,34 @@
11
const db = require('../data/dbConfig.js')
2+
const jwt = require('jsonwebtoken')
3+
const secret = require('../auth/secret.js')
24

35
module.exports = {
46
find,
57
verifyUser,
68
addUser,
7-
deleteUser
9+
deleteUser,
10+
generateToken
11+
}
12+
13+
function generateToken() {
14+
const payload = {
15+
message: 'Onward!'
16+
}
17+
18+
const options = {
19+
expiresIn: '1d'
20+
}
21+
22+
return jwt.sign(payload, secret.jwtSecret, options)
823
}
924

1025
function find() {
11-
return db('users');
26+
return db('users')
1227
}
1328

1429
async function verifyUser(id) {
15-
console.log("ID", id);
16-
30+
console.log('ID', id)
31+
1732
const selected = db('users')
1833
.where('user_id', id)
1934
.first()
@@ -22,7 +37,7 @@ async function verifyUser(id) {
2237
}
2338

2439
async function addUser(user) {
25-
console.log("USER", user);
40+
console.log('USER', user)
2641
const [id] = await db('users')
2742
.returning('id')
2843
.insert(user)

user/user-routes.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,16 @@ router.post('/user', async (req, res) => {
3636

3737
User.verifyUser(id)
3838
.then(async user => {
39+
const token = User.generateToken()
3940
if (user == null) {
4041
const newUser = await User.addUser({
4142
user_id: id,
4243
first_name: firstName,
4344
last_name: lastName
4445
})
45-
res.status(200).json(newUser)
46+
res.status(200).json({ userInfo: newUser, token: token })
4647
}
47-
res.status(200).json(user)
48+
res.status(200).json({ userInfo: user, token: token })
4849
})
4950
.catch(error => {
5051
res.status(500).json({ err: 'Could not verify user', error })

0 commit comments

Comments
 (0)