edit: function(req, res) {
        let co = new ControllerOut(res);
        const operator = TokenService.getToken(req);

        let params = req.allParams();
        let getDataTypePrivilege = BluebirdPromise.promisify(DataTypeService.getDataTypePrivilege);

        return BluebirdPromise.props({
            // group: Group.findOne({id: params.groupId}),
            groups: GroupService.getAsync(!operator.isWheel ? operator.adminGroups : null),
            // retrieve all dataTypes not yet authorized for this group
            dataTypes: DataTypeService.getDataTypesToCreateNewPrivileges(params.groupId),
            // dataType: DataTypeService.getDataTypeToEditPrivileges(params.id),
            dataTypePrivilege: getDataTypePrivilege(params.id)
        })

        .then(function(result) {
            sails.log(result);
            return res.json(result);
        })

        .catch(/* istanbul ignore next */ function(err) {
            sails.log.error(err);
            return co.error(err);
        });

    }
    update: function(req, res) {
        let co = new ControllerOut(res);
        let validationSchema = {
            id: Joi.number().integer().positive().required(),
            group: Joi.number().integer().positive().required(),
            dataType: Joi.number().integer().positive().required(),
            privilegeLevel: Joi.string().valid(_.values(DataTypePrivilegeLevels)),
            createdAt: Joi.date(),
            updatedAt: Joi.date()
        };
        let payload = req.body;
        Joi.validateAsync(payload, validationSchema)

        .then(function(validatedBody) {
            return DataTypePrivileges.update({id: validatedBody.id}, validatedBody);
        })

        .then(function(result) {
            return res.json(result);
        })

        .catch(function(err) {
            sails.log("DataTypePrivilegesController.update - got some error while updating existing data type privileges");
            return co.error(err);
        });

    },
 update: function(req, res) {
     const co = new ControllerOut(res);
     coroutines.update(req, res)
     .catch(err => {
         sails.log.error(err);
         return co.error(err);
     });
 },
 find: function(req, res) {
     const co = new ControllerOut(res);
     coroutines.find(req, res)
     .catch(/* istanbul ignore next */ function(err) {
         sails.log.error(err);
         return co.error(err);
     });
 },
    edit: function(req, res) {
        let co = new ControllerOut(res);
        coroutines.edit(req,res)
        .catch(/* istanbul ignore next */ function(err) {
            sails.log(err);
            return co.error(err);
        });

    },
    destroy: function(req, res) {
        let co = new ControllerOut(res);
        let id = req.param('id');
        DataTypePrivileges.destroy(id)

        .then(function(results) {
            return res.json({deleted: results && results.length});
        })

        .catch(/* istanbul ignore next */ function(err) {
            sails.log.error(err);
            return co.error(err);
        });

    },
    find: function(req, res) {
        const co = new ControllerOut(res);

        let query = DataTypePrivileges.find()
           .where(actionUtil.parseCriteria(req))
           .limit(actionUtil.parseLimit(req))
           .skip(actionUtil.parseSkip(req))
           .sort(actionUtil.parseSort(req));

        query = actionUtil.populateRequest(query, req);

        query.then(function(data) {
            res.json(data);
        })
        .catch(function(err) {
            return co.error(err);
        });
    },
    findOne: function(req, res) {
        let co = new ControllerOut(res);
        let id = req.param('id');

        let query = DataTypePrivileges.findOne(id);

        query = actionUtil.populateRequest(query, req);

        query.then(function(result) {

            return res.json(result);
        })

        .catch(/* istanbul ignore next */ function(err) {
            sails.log.error(err);
            return co.error(err);
        });

    },
Example #9
0
            this.download = function downloadFileContent(req, res) {
                let dataFile, idDataType;
                let co = new ControllerOut(res);
                let fileId = _.parseInt(req.param('id'));
                let fileSystem = BluebirdPromise.promisifyAll(sails.hooks['persistence'].getFileSystem().manager);
                const operator = TokenService.getToken(req);

                DataFile.findOne(fileId).populate('data').populate('samples').then(result => {

                    dataFile = result;
                    dataFile.data[0] ? idDataType = dataFile.data[0].type :
                    dataFile.samples[0] ? idDataType = dataFile.samples[0].type : undefined;
                    return DataTypeService.getDataTypePrivilegeLevel(operator.groups, idDataType);
                })
                .then(dataTypePrivilege => {

                    if(!dataTypePrivilege || (dataTypePrivilege.privilegeLevel !== DOWNLOAD && dataTypePrivilege.privilegeLevel !== EDIT)){
                        throw new PrivilegesError(`Authenticated user has not download privileges on the data type ${dataFile.data.id}`);
                    }

                    sails.log.info("downloadFileContent - dataFile");
                    sails.log.info(dataFile);

                    let pathFrags = dataFile.uri.split("/");
                    let fileName = pathFrags[pathFrags.length-1];

                    // set response headers for file download
                    res.setHeader('Content-Disposition', `attachment;filename=${fileName}`);

                    return fileSystem.downloadFileContentAsync(dataFile.uri, res);
                })
                .then(result => {
                    return res.ok(); // res.json() ??
                })
                .catch(/* istanbul ignore next */ function(err) {
                    return co.error(err);
                });

            };
    create: function(req, res) {
        let co = new ControllerOut(res);
        let validationSchema = {
            group: Joi.number().integer().positive().required(),
            dataType: Joi.number().integer().positive().required(),
            privilegeLevel: Joi.string().valid(_.values(DataTypePrivilegeLevels))
        };
        Joi.validateAsync(req.body, validationSchema)

        .then(function(validatedBody) {
            return DataTypePrivileges.create(validatedBody);
        })

        .then(function(result) {
            res.set('Location', req.baseUrl + req.url + '/'  + result.id);
            return res.json(201, result);
        })

        .catch(/* istanbul ignore next */ function(err) {
            sails.log.error("DataTypePrivilegesController.create - got some error while creating new data type privileges");
            return co.error(err);
        });

    },
 .catch(/* istanbul ignore next */ function(err) {
     sails.log(err);
     return co.error(err);
 });
 .catch(err => {
     sails.log.error(err);
     return co.error(err);
 });
 .catch(function(err) {
     return co.error(err);
 });
 .catch(/* istanbul ignore next */ function(err) {
     sails.log.error("DataTypePrivilegesController.create - got some error while creating new data type privileges");
     return co.error(err);
 });
 .catch(function(err) {
     sails.log("DataTypePrivilegesController.update - got some error while updating existing data type privileges");
     return co.error(err);
 });
Example #16
0
 .catch(/* istanbul ignore next */ function(err) {
     return co.error(err);
 });