|
|
const { Workspace } = require("../../models/workspace"); |
|
|
const { WorkspaceThread } = require("../../models/workspaceThread"); |
|
|
const { userFromSession, multiUserMode } = require("../http"); |
|
|
|
|
|
|
|
|
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(); |
|
|
} |
|
|
|
|
|
|
|
|
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, |
|
|
}; |
|
|
|