You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
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,};
|