File size: 1,609 Bytes
f8b5d42 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
const { Workspace } = require("../../models/workspace");
const { WorkspaceThread } = require("../../models/workspaceThread");
const { userFromSession, multiUserMode } = require("../http");
// Will pre-validate and set the workspace for a request if the slug is provided in the URL path.
async function validWorkspaceSlug(request, response, next) {
const { slug } = request.params;
const user = await userFromSession(request, response);
const workspace = multiUserMode(response)
? await Workspace.getWithUser(user, { slug })
: await Workspace.get({ slug });
if (!workspace) {
response.status(404).send("Workspace does not exist.");
return;
}
response.locals.workspace = workspace;
next();
}
// Will pre-validate and set the workspace AND a thread for a request if the slugs are provided in the URL path.
async function validWorkspaceAndThreadSlug(request, response, next) {
const { slug, threadSlug } = request.params;
const user = await userFromSession(request, response);
const workspace = multiUserMode(response)
? await Workspace.getWithUser(user, { slug })
: await Workspace.get({ slug });
if (!workspace) {
response.status(404).send("Workspace does not exist.");
return;
}
const thread = await WorkspaceThread.get({
slug: threadSlug,
user_id: user?.id || null,
});
if (!thread) {
response.status(404).send("Workspace thread does not exist.");
return;
}
response.locals.workspace = workspace;
response.locals.thread = thread;
next();
}
module.exports = {
validWorkspaceSlug,
validWorkspaceAndThreadSlug,
};
|