| const { | |
| BrowserExtensionApiKey, | |
| } = require("../../models/browserExtensionApiKey"); | |
| const { SystemSettings } = require("../../models/systemSettings"); | |
| const { User } = require("../../models/user"); | |
| async function validBrowserExtensionApiKey(request, response, next) { | |
| const multiUserMode = await SystemSettings.isMultiUserMode(); | |
| response.locals.multiUserMode = multiUserMode; | |
| const auth = request.header("Authorization"); | |
| const bearerKey = auth ? auth.split(" ")[1] : null; | |
| if (!bearerKey) { | |
| response.status(403).json({ | |
| error: "No valid API key found.", | |
| }); | |
| return; | |
| } | |
| const apiKey = await BrowserExtensionApiKey.validate(bearerKey); | |
| if (!apiKey) { | |
| response.status(403).json({ | |
| error: "No valid API key found.", | |
| }); | |
| return; | |
| } | |
| if (multiUserMode) { | |
| response.locals.user = await User.get({ id: apiKey.user_id }); | |
| } | |
| response.locals.apiKey = apiKey; | |
| next(); | |
| } | |
| module.exports = { validBrowserExtensionApiKey }; | |