Skip to content

Commit

Permalink
BE #6 Apply ACL to image upload/retrieve API
Browse files Browse the repository at this point in the history
  • Loading branch information
Satyajit Dey committed May 18, 2020
1 parent 37729a3 commit 08a968a
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 3 deletions.
23 changes: 21 additions & 2 deletions controllers/binaries.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,11 @@ exports.uploadImage = (req, res) => {
uploadFile(req.file.path, req.file.filename, res);
};

let uploadFile = function (source, target, res) {
exports.retrieveImage = (req, res) => {
retrieveFile(req.params.filename, res);
};

let uploadFile = (source, target, res) => {
fs.readFile(source, (err, fileData) => {
if (err) {
return res.status(500).send({error: err});
Expand All @@ -25,7 +29,7 @@ let uploadFile = function (source, target, res) {
Body: fileData
};

s3.putObject(putParams, (err, data) => {
s3.upload(putParams, (err, data) => {
if (err) {
return res.status(500).send({error: err});
}
Expand All @@ -40,4 +44,19 @@ let uploadFile = function (source, target, res) {
});
};

let retrieveFile = (fileName, res) => {
const getParams = {
Bucket: process.env.AWS_S3_BUCKET_BINARIES,
Key: fileName
};

s3.getObject(getParams, function (err, data) {
if (err) {
return res.status(400).send({success: false, err: err});
} else {
return res.send(data);
}
});
};


12 changes: 11 additions & 1 deletion routes/binaries.route.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ const express = require('express');
const router = express.Router();
const multer = require('multer');

const AuthValidationMiddleware = require("../middlewares/auth.validation.middleware");
const AuthPermissionMiddleware = require("../middlewares/auth.permission.middleware");
const BinariesController = require('../controllers/binaries.controller');

// configure DiscStorage engine
Expand All @@ -14,6 +16,14 @@ const storage = multer.diskStorage({

const upload = multer({storage: storage});

router.post('/images/upload', upload.single('image'), BinariesController.uploadImage);
router.get('/images/retrieve/:filename',
AuthValidationMiddleware.verifyJwtToken,
AuthPermissionMiddleware.minimumPermissionLevelRequired(process.env.AUTH_PERMISSION_VIEWER),
BinariesController.retrieveImage);

router.post('/images/upload', upload.single('image'),
AuthValidationMiddleware.verifyJwtToken,
AuthPermissionMiddleware.minimumPermissionLevelRequired(process.env.AUTH_PERMISSION_EDITOR),
BinariesController.uploadImage);

module.exports = router;

0 comments on commit 08a968a

Please sign in to comment.