45 lines
1.6 KiB
JavaScript
45 lines
1.6 KiB
JavaScript
const app = require('express').Router();
|
|
const crypto = require('crypto');
|
|
const checkPermission = require("../middlewares/checkPermission");
|
|
const APIKey = require("../models/APIKey");
|
|
|
|
app.put("/", checkPermission("admin.apikey.create"), async (req, res) => {
|
|
|
|
// Generate apikey
|
|
const token = crypto.randomBytes(64).toString('hex');
|
|
|
|
try {
|
|
// Return response
|
|
res.status(200).send(await APIKey.create({token: token, client_id: req.clientId}));
|
|
} catch (e) {
|
|
res.status(500).json({message: "An internal error occurred."})
|
|
}
|
|
});
|
|
|
|
app.get("/:apiKey", checkPermission("admin.apikey.info"), async (req, res) => {
|
|
// Validate request
|
|
if (!req.params.apiKey) return res.status(400).json({message: "You need to provide an api key"});
|
|
|
|
// Search for the api key
|
|
const apikey = await APIKey.findOne({where: {token: req.params.apiKey}});
|
|
if (apikey) {
|
|
// Return response
|
|
res.status(200).json(apikey);
|
|
} else res.status(402).json({message: "Invalid API key"});
|
|
});
|
|
|
|
app.delete("/:apiKey", checkPermission("admin.apikey.delete"), async (req, res) => {
|
|
// Validate request
|
|
if (!req.params.apiKey) return res.status(400).json({message: "You need to provide an api key"});
|
|
|
|
// Search for the api key
|
|
const apikey = await APIKey.findOne({where: {token: req.params.apiKey}});
|
|
if (apikey) {
|
|
// Destroy api key
|
|
await APIKey.destroy({where: {token: req.params.apiKey}});
|
|
// Return response
|
|
res.status(200).json({message: "Successfully deleted"});
|
|
} else res.status(402).json({message: "Invalid API key"});
|
|
});
|
|
|
|
module.exports = app; |