Skip to content

Commit

Permalink
Merge feat/owner and feat@type #39 #38
Browse files Browse the repository at this point in the history
  • Loading branch information
gicaz committed Sep 29, 2017
2 parents 852f553 + c041cfd commit 8d753e0
Show file tree
Hide file tree
Showing 96 changed files with 3,736 additions and 14,814 deletions.
10 changes: 10 additions & 0 deletions api/controllers/AddressInformationController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/**
* AddressInformationController
*
* @description :: Server-side logic for managing contactinformations
* @help :: See http://links.sailsjs.org/docs/controllers
*/

module.exports = {

};
4 changes: 2 additions & 2 deletions api/controllers/AuthController.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,8 @@ let AuthController = {
return res.ok("User successfully logged out.");
})

.catch(function(err) {
// console.log(err);
.catch(/* istanbul ignore next */ function(err) {
sails.log.error(err);
return res.serverError("Caught some error while disconnecting the user");
});
}
Expand Down
19 changes: 11 additions & 8 deletions api/controllers/DataController.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* @help :: See http://links.sailsjs.org/docs/controllers
*/
/* jshint node: true */
/* globals _, sails, Data, DataType, DataService, DataTypeService, SubjectService, SampleService, QueryService, TokenService, DataTypePrivileges */
/* globals _, sails, Data, DataType, DataService, DataTypeService, SubjectService, OperatorService, SampleService, QueryService, TokenService, DataTypePrivileges */
"use strict";

const BluebirdPromise = require('bluebird');
Expand Down Expand Up @@ -38,8 +38,8 @@ const coroutines = {
throw new PrivilegesError(`Authenticated user has not edit privileges on the data type ${data.type}`);
}
DataService.simplify(data);
const dataType = yield DataType.findOne(data.type);
const validationRes = DataService.validate(data, true, dataType);
const dataType = yield DataType.findOne(data.type).populate('superType');
const validationRes = yield DataService.validate(data, true, dataType);
if (validationRes.error !== null) {
throw new ValidationError(validationRes.error);
}
Expand Down Expand Up @@ -103,6 +103,7 @@ const coroutines = {
const operator = TokenService.getToken(req);

let result = yield DataService.hasDataSensitive(data.id, DATA);
console.log(result,operator);
if (result.hasDataSensitive && !operator.canAccessSensitiveData) {
throw new PrivilegesError("Authenticated user is not allowed to modify sensitive data");
}
Expand All @@ -114,8 +115,8 @@ const coroutines = {
}
DataService.simplify(data);

const dataType = yield DataType.findOne(idDataType);
const validationRes = DataService.validate(data, true, dataType);
const dataType = yield DataType.findOne(idDataType).populate('superType');
const validationRes = yield DataService.validate(data, true, dataType);
if (validationRes.error !== null) {
throw new ValidationError(validationRes.error);
}
Expand Down Expand Up @@ -175,6 +176,8 @@ const coroutines = {
if (_.isEmpty(payload.dataTypes)){ throw new PrivilegesError(`Authenticated user has not edit privileges on any data type`); }

if (payload.data){
let operators = yield OperatorService.getOwners(payload.data);
payload.operators = operators;
// if operator has not access to Sensitive Data and dataType has sensitive data, then return forbidden
const sensitiveRes = yield DataService.hasDataSensitive(payload.data.id, DATA);
if (sensitiveRes && ((sensitiveRes.hasDataSensitive && !operator.canAccessSensitiveData))) {
Expand Down Expand Up @@ -221,7 +224,7 @@ module.exports = {
findOne: function(req, res) {
const co = new ControllerOut(res);
coroutines.findOne(req, res)
.catch(error => {
.catch(/* istanbul ignore next */ function(error) {
sails.log.error("DataController.findOne: " + error.message);
return co.error(error);
});
Expand All @@ -239,8 +242,8 @@ module.exports = {
find: function(req, res) {
const co = new ControllerOut(res);
coroutines.find(req,res)
.catch( function(err) {
sails.log.error(err);
.catch( /* istanbul ignore next */ function(err) {
sails.log(err);
return co.error(err);
});
},
Expand Down
22 changes: 15 additions & 7 deletions api/controllers/DataTypeController.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* @help :: See http://links.sailsjs.org/docs/controllers
*/
/* jshint node: true */
/* globals _, sails, DataType, DataTypeService, TokenService, Group, Project */
/* globals _, sails, DataType, DataTypeService, TokenService, Group, Project, SuperTypeService */
"use strict";
const ControllerOut = require("xtens-utils").ControllerOut, ValidationError = require('xtens-utils').Errors.ValidationError;
const PrivilegesError = require('xtens-utils').Errors.PrivilegesError;
Expand Down Expand Up @@ -33,7 +33,7 @@ const coroutines = {
query.limit(1000); // default limit for dataTypes
}
if (!req.param('populate')) {
query.populate('parents'); // by default populate only with 'parents' dataTypes
query.populate(['parents', 'superType']); // by default populate only with 'parents' dataTypes and 'superType'
}
else {
query = actionUtil.populateRequest(query, req);
Expand Down Expand Up @@ -150,12 +150,20 @@ const coroutines = {
edit: BluebirdPromise.coroutine(function *(req, res) {
const operator = TokenService.getToken(req);
const params = req.allParams();
let isMultiProject, resObject = {};
sails.log.info("DataTypeController.edit - Decoded ID is: " + operator.id);

const projects = yield Project.find().sort('id ASC');

const dataTypes= yield DataType.find({ project:_.map(projects,'id') }).populate(['project','parents']).sort('id ASC');
return res.json({params: params, dataTypes: dataTypes});
const dataTypes= yield DataType.find({ project:_.map(projects,'id') }).populate(['project','parents','superType']).sort('id ASC');
if (params.id) {
const dataType = _.find(dataTypes,{'id': parseInt(params.id)});
isMultiProject = yield SuperTypeService.isMultiProject(dataType.superType);
resObject.isMultiProject = isMultiProject;
}
resObject.params = params;
resObject.dataTypes = dataTypes;
return res.json(resObject);
}),

destroy: BluebirdPromise.coroutine(function *(req, res, co) {
Expand Down Expand Up @@ -194,7 +202,7 @@ const DataTypeController = {
find: function(req, res) {
const co = new ControllerOut(res);
coroutines.find(req, res)
.catch(err => {
.catch(/* istanbul ignore next */ function(err) {
sails.log.error(err);
return co.error(err);
});
Expand Down Expand Up @@ -237,7 +245,7 @@ const DataTypeController = {

let co = new ControllerOut(res);
coroutines.destroy(req,res,co)
.catch(function(err) {
.catch(/* istanbul ignore next */ function(err) {
sails.log(err);
return co.error(err);
});
Expand All @@ -252,7 +260,7 @@ const DataTypeController = {
edit: function(req, res) {
let co = new ControllerOut(res);
coroutines.edit(req,res)
.catch(function(err) {
.catch(/* istanbul ignore next */ function(err) {
sails.log(err);
return co.error(err);
});
Expand Down
16 changes: 9 additions & 7 deletions api/controllers/DataTypePrivilegesController.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ let DataTypePrivilegesController = {
return res.json(201, result);
})

.catch(function(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);
});
Expand All @@ -62,12 +62,13 @@ let DataTypePrivilegesController = {
query = actionUtil.populateRequest(query, req);

query.then(function(result) {

return res.json(result);
})

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

},
Expand Down Expand Up @@ -145,7 +146,8 @@ let DataTypePrivilegesController = {
return res.json({deleted: results && results.length});
})

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

Expand Down Expand Up @@ -177,8 +179,8 @@ let DataTypePrivilegesController = {
return res.json(result);
})

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

Expand Down
4 changes: 2 additions & 2 deletions api/controllers/ProjectController.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ module.exports = {
find: function(req, res) {
const co = new ControllerOut(res);
coroutines.find(req, res)
.catch(err => {
.catch(/* istanbul ignore next */ function(err) {
sails.log.error(err);
return co.error(err);
});
Expand All @@ -81,7 +81,7 @@ module.exports = {
edit: function(req, res) {
const co = new ControllerOut(res);
coroutines.edit(req, res)
.catch(err => {
.catch(/* istanbul ignore next */ function(err) {
sails.log.error(err);
return co.error(err);
});
Expand Down
2 changes: 1 addition & 1 deletion api/controllers/QueryController.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@

})

.catch(error => {
.catch(/* istanbul ignore next */ function(error) {
sails.log.error(error);
res.serverError(error.message);
});
Expand Down
17 changes: 11 additions & 6 deletions api/controllers/SampleController.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* @help :: See http://links.sailsjs.org/docs/controllers
*/
/* jshint node: true */
/* globals _, sails, Sample, DataType, SubjectService, BiobankService, SampleService, DataTypePrivileges, TokenService, QueryService, DataService, DataTypeService */
/* globals _, sails, Sample, DataType, SubjectService, BiobankService, OperatorService, SampleService, DataTypePrivileges, TokenService, QueryService, DataService, DataTypeService */
"use strict";

const BluebirdPromise = require('bluebird');
Expand Down Expand Up @@ -38,7 +38,8 @@ const coroutines = {
}
SampleService.simplify(sample);
const dataType = yield DataType.findOne(sample.type);
const validationRes = SampleService.validate(sample, true, dataType);

const validationRes = yield SampleService.validate(sample, true, dataType);
if (validationRes.error !== null) {
throw new ValidationError(validationRes.error);
}
Expand Down Expand Up @@ -114,7 +115,7 @@ const coroutines = {
SampleService.simplify(sample);

const dataType = yield DataType.findOne(idSampleType);
const validationRes = SampleService.validate(sample, true, dataType);
const validationRes = yield SampleService.validate(sample, true, dataType);
if (validationRes.error !== null) {
throw new ValidationError(validationRes.error);
}
Expand Down Expand Up @@ -176,6 +177,9 @@ const coroutines = {


if (payload.sample){

let operators = yield OperatorService.getOwners(payload.sample);
payload.operators = operators;
// if operator has not access to Sensitive Data and dataType has sensitive data, then return forbidden
const sensitiveRes = yield DataService.hasDataSensitive(payload.sample.id, SAMPLE);
if (sensitiveRes && ((sensitiveRes.hasDataSensitive && !operator.canAccessSensitiveData))) {
Expand Down Expand Up @@ -220,8 +224,9 @@ module.exports = {
findOne: function(req, res) {
const co = new ControllerOut(res);
coroutines.findOne(req,res)
.catch(error => {
return co.error(error);
.catch(/* istanbul ignore next */ function(err) {
sails.log.error(err);
return co.error(err);
});

},
Expand All @@ -237,7 +242,7 @@ module.exports = {
find: function(req, res) {
const co = new ControllerOut(res);
coroutines.find(req,res)
.catch(err => {
.catch(/* istanbul ignore next */ function(err) {
sails.log.error(err);
return co.error(err);
});
Expand Down
8 changes: 5 additions & 3 deletions api/controllers/SubjectController.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* @help :: See http://links.sailsjs.org/docs/controllers
*/
/* jshint node: true */
/* globals _, sails, DataTypePrivileges, Subject, DataType, SubjectService, TokenService, QueryService, DataService, DataTypeService */
/* globals _, sails, DataTypePrivileges, Subject, DataType, SubjectService, OperatorService, TokenService, QueryService, DataService, DataTypeService */
"use strict";

const ControllerOut = require("xtens-utils").ControllerOut;
Expand Down Expand Up @@ -39,7 +39,7 @@ const coroutines = {
SubjectService.simplify(subject);
const dataType = yield DataType.findOne(subject.type);

const validationRes = SubjectService.validate(subject, true, dataType);
const validationRes = yield SubjectService.validate(subject, true, dataType);
if (validationRes.error !== null) {
throw new ValidationError(validationRes.error);
}
Expand Down Expand Up @@ -123,7 +123,7 @@ const coroutines = {
SubjectService.simplify(subject);

const dataType = yield DataType.findOne(idSubjectType);
const validationRes = SubjectService.validate(subject, true, dataType);
const validationRes = yield SubjectService.validate(subject, true, dataType);
if (validationRes.error !== null) {
throw new ValidationError(validationRes.error);
}
Expand Down Expand Up @@ -178,6 +178,8 @@ const coroutines = {
if (_.isEmpty(payload.dataTypes)){ throw new PrivilegesError(`Authenticated user has not edit privileges on any subject type`); }

if (payload.subject){
let operators = yield OperatorService.getOwners(payload.subject);
payload.operators = operators;
// if operator has not access to Sensitive Data and dataType has sensitive data, then return forbidden
const sensitiveRes = yield DataService.hasDataSensitive(payload.subject.id, SUBJECT);
if (sensitiveRes && ((sensitiveRes.hasDataSensitive && !operator.canAccessSensitiveData))) {
Expand Down
31 changes: 31 additions & 0 deletions api/controllers/SuperTypeController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/**
* SuperTypeController
*
* @description :: Server-side logic for managing supertypes
* @help :: See http://links.sailsjs.org/docs/controllers
*/
/* jshint node: true */
/* globals _, sails, SuperType, SuperTypeService, TokenService, Group, Project */
"use strict";

const ControllerOut = require("xtens-utils").ControllerOut, ValidationError = require('xtens-utils').Errors.ValidationError;
const PrivilegesError = require('xtens-utils').Errors.PrivilegesError;
const crudManager = sails.hooks.persistence.crudManager;
const actionUtil = require('sails/lib/hooks/blueprints/actionUtil');
const BluebirdPromise = require('bluebird');

const coroutines = {


};



const SuperTypeController = {




};

module.exports = SuperTypeController;
Loading

0 comments on commit 8d753e0

Please sign in to comment.