ed458fb619
* feat(server): add server authz pipeline rework first sketch * feat(server authz): add new server authz middleware poc implementation * test(server authz): add unittests for the new server authz workflow * feat(wip rework of fileuploads vs blob storage): add basim impl of separate blob storage service * feat(fileimport service): refactored file import service to utilize the new asssetstorage service * refactor(server errors): refactor server errors to use the shared module definitions Now all the errors inherit from BaseError * refactor(fileimport service): cleanup after refactor * feat(frontend fileimports): use the new blob storage for downloading the original file * refactor(server fileimports): clean up the remnants of S3 storage from file imports * refactor(server authz): centralize generic authz pipeline configs * refactor(server blob storage): refactor / rename everything to use the `blob-storage` name * ci(circleci): add s3 objectstorage environment variables * ci(circleci): fix missing env variables * ci(circleci): add minio test container * ci(circleci): fix minio app startup * ci(circleci): enable circleci remote docker * ci(circleci): fix minio startup * ci(cirleci): detach and wait properly for minio to start * ci(circleci): revert to additional minio img config, it only fails when the container is stopped ?! * ci(circleci): disable file uploads * fix(fileimports): update with blob storage refactor leftovers * feat(server blob storage): add blob storage graphql api * refactor(server errors): merge new errors to shared module * fix(server comments rte): fix import for RTE error * chore(fileimports): remove node-fetch from dependency * chore(server): remove body parser dependency * fix(server blob storage): fix gql api * fix(frontend): fix fileupload item not loading the new upload status, cause of premature event fire * feat(server blob storage): fix file size limit and allow for public streams * Update packages/server/modules/blobstorage/graph/schemas/blobstorage.graphql Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com> * chore(blobstorage): fix PR review issues * fix(server): fix import bugs Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com>
64 lines
1.7 KiB
JavaScript
64 lines
1.7 KiB
JavaScript
/* istanbul ignore file */
|
|
'use strict'
|
|
|
|
const debug = require('debug')
|
|
const { contextMiddleware } = require('@/modules/shared')
|
|
const { saveUploadFile } = require('./services/fileuploads')
|
|
const request = require('request')
|
|
const {
|
|
authMiddlewareCreator,
|
|
streamWritePermissions
|
|
} = require('@/modules/shared/authz')
|
|
|
|
const saveFileUploads = async ({ userId, streamId, branchName, uploadResults }) => {
|
|
await Promise.all(
|
|
uploadResults.map(async (upload) => {
|
|
await saveUploadFile({
|
|
fileId: upload.blobId,
|
|
streamId,
|
|
branchName,
|
|
userId,
|
|
fileName: upload.fileName,
|
|
fileType: upload.fileName.split('.').pop(),
|
|
fileSize: upload.fileSize
|
|
})
|
|
})
|
|
)
|
|
}
|
|
|
|
exports.init = async (app) => {
|
|
if (process.env.DISABLE_FILE_UPLOADS) {
|
|
debug('speckle:modules')('📄 FileUploads module is DISABLED')
|
|
return
|
|
} else {
|
|
debug('speckle:modules')('📄 Init FileUploads module')
|
|
}
|
|
|
|
app.post(
|
|
'/api/file/:fileType/:streamId/:branchName?',
|
|
contextMiddleware,
|
|
authMiddlewareCreator(streamWritePermissions),
|
|
async (req, res) => {
|
|
req.pipe(
|
|
request(
|
|
`${process.env.CANONICAL_URL}/api/stream/${req.params.streamId}/blob`,
|
|
async (err, response, body) => {
|
|
if (response.statusCode === 201) {
|
|
const { uploadResults } = JSON.parse(body)
|
|
await saveFileUploads({
|
|
userId: req.context.userId,
|
|
streamId: req.params.streamId,
|
|
branchName: req.params.branchName ?? 'main',
|
|
uploadResults
|
|
})
|
|
}
|
|
res.status(response.statusCode).send(body)
|
|
}
|
|
)
|
|
)
|
|
}
|
|
)
|
|
}
|
|
|
|
exports.finalize = () => {}
|