Skip to content

Commit

Permalink
feat: add organization_id to response headers
Browse files Browse the repository at this point in the history
  • Loading branch information
frankpagan committed May 19, 2023
1 parent 94c59cd commit 2f731f5
Showing 1 changed file with 30 additions and 35 deletions.
65 changes: 30 additions & 35 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ const organizations = new Map();

class CoCreateFileSystem {
constructor(crud, render) {

async function defaultFiles(fileName) {
let file = await crud.readDocument({
let file = await crud.readDocument({
collection: 'files',
filter: {
query: [
{name: "path", value: fileName, operator: "$eq"}
{ name: "path", value: fileName, operator: "$eq" }
]
},
organization_id: process.env.organization_id
Expand All @@ -41,68 +41,68 @@ class CoCreateFileSystem {
signup = file
})

this.router = router.get('/*', async(req, res) => {
this.router = router.get('/*', async (req, res) => {
let hostname = req.hostname;
let organization = organizations.get(hostname);
if (!organization) {
let org = await crud.readDocument({
let org = await crud.readDocument({
collection: 'organizations',
filter: {
query: [
{name: "hosts", value: [hostname], operator: "$in"}
{ name: "hosts", value: [hostname], operator: "$in" }
]
},
organization_id: process.env.organization_id
})

if (!org || !org.document || !org.document[0]) {
hostNotFound = hostNotFound || 'Organization cannot be found using the host: ' + hostname + ' in platformDB: ' + process.env.organization_id
organization = {_id: process.env.organization_id, key: process.env.key}
if (!req.url.startsWith('/superadmin'))
return res.redirect(301, 'https://' + hostname + '/superadmin/signup.html')
hostNotFound = hostNotFound || 'Organization cannot be found using the host: ' + hostname + ' in platformDB: ' + process.env.organization_id
return res.end(hostNotFound);
} else {
organization = {_id: org.document[0]._id, key: org.document[0].key}
organization = { _id: org.document[0]._id }
organizations.set(hostname, organization)
}
}

let organization_id = organization._id
res.set('organization', organization_id)

let [url, parameters] = req.url.split("?");
if (parameters){}
if (parameters) { }
if (url.endsWith('/')) {
url += "index.html";
} else {
let directory = url.split("/").slice(-1)[0];
if (!directory.includes('.')){
if (!directory.includes('.')) {
url += "/index.html";
}
}

let data = {
collection: 'files',
filter: {
query: [
{name: "hosts", value: [hostname, '*'], operator: "$in"},
{name: "path", value: url, operator: "$eq"}
{ name: "hosts", value: [hostname, '*'], operator: "$in" },
{ name: "path", value: url, operator: "$eq" }
]
},
organization_id
}

if (url.startsWith('/superadmin'))
if (url.startsWith('/superadmin'))
data.organization_id = process.env.organization_id

let file = await crud.readDocument(data);

if (!file || !file.document || !file.document[0]) {
data.filter.query[1].value = '/404.html'
if (data.organization_id !== organization_id)
data.organization_id = organization_id

let pageNotFound = await crud.readDocument(data);
let pageNotFound = await crud.readDocument(data);
if (!pageNotFound || !pageNotFound.document || !pageNotFound.document[0])
pageNotFound = default404 || `${url} could not be found for ${organization_id}`
else
else
pageNotFound = pageNotFound.document[0].src
return res.status(404).send(pageNotFound);
}
Expand All @@ -113,15 +113,15 @@ class CoCreateFileSystem {
if (data.organization_id !== organization_id)
data.organization_id = organization_id

let pageForbidden = await crud.readDocument(data);
let pageForbidden = await crud.readDocument(data);
if (!pageForbidden || !pageForbidden.document || !pageForbidden.document[0])
pageForbidden = default403 || `${url} access not allowed for ${organization_id}`
else
else
pageForbidden = pageForbidden.document[0].src

return res.status(403).send(pageForbidden);
}

let src;
if (file['src'])
src = file['src'];
Expand All @@ -135,18 +135,18 @@ class CoCreateFileSystem {
});
src = fileSrc[file['name']];
}

if (!src) {
data.filter.query[1].value = '/404.html'
if (data.organization_id !== organization_id)
data.organization_id = organization_id

let pageNotFound = await crud.readDocument(data);
let pageNotFound = await crud.readDocument(data);
if (!pageNotFound || !pageNotFound.document || !pageNotFound.document[0])
pageNotFound = `${url} could not be found for ${organization_id}`
pageNotFound = `${url} could not be found for ${organization_id}`
return res.status(404).send(pageNotFound);
}

let contentType = file['content-type'] || mime.lookup(url) || 'text/html';

if (contentType.startsWith('image/') || contentType.startsWith('audio/') || contentType.startsWith('video/')) {
Expand All @@ -158,18 +158,13 @@ class CoCreateFileSystem {
} catch (err) {
console.warn('server-render: ' + err.message)
}
}
if (process.env.organization_id !== organization_id && url.startsWith('/superadmin') && contentType === 'text/html' && !url.includes('/signup.html')) {
src = src.replace(process.env.organization_id, organization_id)
src = src.replace(process.env.key, organization.key)
}

return res.type(contentType).send(src);

})
}

}
}

module.exports = CoCreateFileSystem;

0 comments on commit 2f731f5

Please sign in to comment.