WIP token
This commit is contained in:
10
consumerWebsite/routes/api_routes.js
Normal file
10
consumerWebsite/routes/api_routes.js
Normal file
@ -0,0 +1,10 @@
|
||||
'use strict';
|
||||
const router = require('express').Router();
|
||||
|
||||
router.use('/user', require('./user'));
|
||||
|
||||
router.use('/apikey', require('./apikey'));
|
||||
|
||||
module.exports = router;
|
||||
|
||||
|
69
consumerWebsite/routes/apikey.js
Normal file
69
consumerWebsite/routes/apikey.js
Normal file
@ -0,0 +1,69 @@
|
||||
const { getAPIKey , addAPIKey } = require("../functions/apiDatabase.js");
|
||||
const { hashAPIKey } = require("../functions/bcrypt.js");
|
||||
const { generateUUID } = require("../functions/generateUUID.js");
|
||||
|
||||
const express = require("express");
|
||||
const router = express.Router();
|
||||
|
||||
router.get("/", async (req, res, next) => {
|
||||
try {
|
||||
const location = await getAPIKey();
|
||||
res.status(200).json(location);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
1) ensure user is logged in (frontend session validation blah or wtv)
|
||||
2) when user click on generate api key button, it will generate a random api key
|
||||
3) hash the api key
|
||||
4) store the api key in database
|
||||
*/
|
||||
router.post("/new", async (req, res, next) => {
|
||||
try {
|
||||
let uuid = await generateUUID()
|
||||
//attach uuid to req.body
|
||||
req.body.apikey = uuid
|
||||
//hash apikey
|
||||
req.body.apikey = await hashAPIKey(req.body.apikey)
|
||||
|
||||
await addAPIKey(req.body);
|
||||
res.sendStatus(200);
|
||||
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
|
||||
//update
|
||||
//delete
|
||||
//getbyid
|
||||
|
||||
module.exports = router;
|
||||
|
||||
|
||||
/*
|
||||
async function addAPIKey(userId) {
|
||||
let apikey = await generateUUID()
|
||||
apikey = await hashAPIKey(req.body.apikey)
|
||||
let token = await apikeyModel.create({apikey, userId});
|
||||
return `${token.id}-${apikey}`
|
||||
}
|
||||
|
||||
|
||||
router.post("/new", async (req, res, next) => {
|
||||
try {
|
||||
let apikey = await addAPIKey(req.body.userid)
|
||||
res.json({apiKey: apikey})
|
||||
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
*/
|
42
consumerWebsite/routes/user.js
Normal file
42
consumerWebsite/routes/user.js
Normal file
@ -0,0 +1,42 @@
|
||||
const { getUser, addUser } = require("../functions/apiDatabase.js");
|
||||
const { hashPassword } = require("../functions/bcrypt.js");
|
||||
|
||||
const express = require("express");
|
||||
const router = express.Router();
|
||||
|
||||
router.get("/", async (req, res, next) => {
|
||||
try {
|
||||
const location = await getUser();
|
||||
res.status(200).json(location);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
1) req.body is taken from html form or wtv
|
||||
2) bcrpyt and hash the password on the server side
|
||||
3) pass to db
|
||||
*/
|
||||
router.post("/new", async (req, res, next) => {
|
||||
try {
|
||||
//pass pass to hashPassword
|
||||
let hash = await hashPassword(req.body.password);
|
||||
//add hash back to req.body
|
||||
req.body.password = hash;
|
||||
await addUser(req.body);
|
||||
res.sendStatus(200);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
//login
|
||||
//update
|
||||
//delete
|
||||
//getbyid
|
||||
|
||||
module.exports = router;
|
Reference in New Issue
Block a user