| 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, |
| }; |
|
|