fix(server): fixes #96

corrects permissions check in obj dl route
This commit is contained in:
Dimitrie Stefanescu
2021-02-23 18:08:03 +00:00
parent 051461988d
commit 5f7dae33cc
3 changed files with 23 additions and 13 deletions
+23 -10
View File
@@ -7,28 +7,41 @@ const cors = require( 'cors' )
const { contextMiddleware, validateScopes, authorizeResolver } = require( `${appRoot}/modules/shared` )
const { getObject, getObjectChildrenStream } = require( '../services/objects' )
const { getStream } = require( '../services/streams' )
module.exports = ( app ) => {
app.options( '/objects/:streamId/:objectId', cors() )
app.get( '/objects/:streamId/:objectId', cors(), contextMiddleware, async ( req, res ) => {
if ( !req.context || !req.context.auth ) {
const stream = await getStream( { streamId: req.params.streamId, userId: req.context.userId } )
if ( !stream ) {
return res.status( 404 ).end()
}
if ( !stream.isPublic && req.context.auth === false ) {
return res.status( 401 ).end( )
}
try {
await validateScopes( req.context.scopes, 'streams:read' )
} catch ( err ) {
return res.status( 401 ).end( )
}
if ( !stream.isPublic ) {
try {
await validateScopes( req.context.scopes, 'streams:read' )
} catch ( err ) {
return res.status( 401 ).end( )
}
try {
await authorizeResolver( req.context.userId, req.params.streamId, 'stream:reviewer' )
} catch ( err ) {
return res.status( 401 ).end( )
try {
await authorizeResolver( req.context.userId, req.params.streamId, 'stream:reviewer' )
} catch ( err ) {
return res.status( 401 ).end( )
}
}
// Populate first object (the "commit")
let obj = await getObject( { objectId: req.params.objectId } )
if ( !obj ) {
return res.status( 404 ).send( `Failed to find object ${req.params.objectId}.` )
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long