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;