Added the Sheepstar API to the Archive
This commit is contained in:
45
SheepstarAPIV1/routes/apikey.js
Normal file
45
SheepstarAPIV1/routes/apikey.js
Normal file
@ -0,0 +1,45 @@
|
||||
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;
|
Reference in New Issue
Block a user