This repository has been archived on 2024-12-31. You can view files and clone it, but cannot push or open issues or pull requests.

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;