Skip to content

Commit 8d753e0

Browse files
committed
Merge feat/owner and feat@type #39 #38
2 parents 852f553 + c041cfd commit 8d753e0

File tree

96 files changed

+3736
-14814
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

96 files changed

+3736
-14814
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/**
2+
* AddressInformationController
3+
*
4+
* @description :: Server-side logic for managing contactinformations
5+
* @help :: See http://links.sailsjs.org/docs/controllers
6+
*/
7+
8+
module.exports = {
9+
10+
};

api/controllers/AuthController.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,8 @@ let AuthController = {
9292
return res.ok("User successfully logged out.");
9393
})
9494

95-
.catch(function(err) {
96-
// console.log(err);
95+
.catch(/* istanbul ignore next */ function(err) {
96+
sails.log.error(err);
9797
return res.serverError("Caught some error while disconnecting the user");
9898
});
9999
}

api/controllers/DataController.js

+11-8
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* @help :: See http://links.sailsjs.org/docs/controllers
66
*/
77
/* jshint node: true */
8-
/* globals _, sails, Data, DataType, DataService, DataTypeService, SubjectService, SampleService, QueryService, TokenService, DataTypePrivileges */
8+
/* globals _, sails, Data, DataType, DataService, DataTypeService, SubjectService, OperatorService, SampleService, QueryService, TokenService, DataTypePrivileges */
99
"use strict";
1010

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

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

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

177178
if (payload.data){
179+
let operators = yield OperatorService.getOwners(payload.data);
180+
payload.operators = operators;
178181
// if operator has not access to Sensitive Data and dataType has sensitive data, then return forbidden
179182
const sensitiveRes = yield DataService.hasDataSensitive(payload.data.id, DATA);
180183
if (sensitiveRes && ((sensitiveRes.hasDataSensitive && !operator.canAccessSensitiveData))) {
@@ -221,7 +224,7 @@ module.exports = {
221224
findOne: function(req, res) {
222225
const co = new ControllerOut(res);
223226
coroutines.findOne(req, res)
224-
.catch(error => {
227+
.catch(/* istanbul ignore next */ function(error) {
225228
sails.log.error("DataController.findOne: " + error.message);
226229
return co.error(error);
227230
});
@@ -239,8 +242,8 @@ module.exports = {
239242
find: function(req, res) {
240243
const co = new ControllerOut(res);
241244
coroutines.find(req,res)
242-
.catch( function(err) {
243-
sails.log.error(err);
245+
.catch( /* istanbul ignore next */ function(err) {
246+
sails.log(err);
244247
return co.error(err);
245248
});
246249
},

api/controllers/DataTypeController.js

+15-7
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* @help :: See http://links.sailsjs.org/docs/controllers
66
*/
77
/* jshint node: true */
8-
/* globals _, sails, DataType, DataTypeService, TokenService, Group, Project */
8+
/* globals _, sails, DataType, DataTypeService, TokenService, Group, Project, SuperTypeService */
99
"use strict";
1010
const ControllerOut = require("xtens-utils").ControllerOut, ValidationError = require('xtens-utils').Errors.ValidationError;
1111
const PrivilegesError = require('xtens-utils').Errors.PrivilegesError;
@@ -33,7 +33,7 @@ const coroutines = {
3333
query.limit(1000); // default limit for dataTypes
3434
}
3535
if (!req.param('populate')) {
36-
query.populate('parents'); // by default populate only with 'parents' dataTypes
36+
query.populate(['parents', 'superType']); // by default populate only with 'parents' dataTypes and 'superType'
3737
}
3838
else {
3939
query = actionUtil.populateRequest(query, req);
@@ -150,12 +150,20 @@ const coroutines = {
150150
edit: BluebirdPromise.coroutine(function *(req, res) {
151151
const operator = TokenService.getToken(req);
152152
const params = req.allParams();
153+
let isMultiProject, resObject = {};
153154
sails.log.info("DataTypeController.edit - Decoded ID is: " + operator.id);
154155

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

157-
const dataTypes= yield DataType.find({ project:_.map(projects,'id') }).populate(['project','parents']).sort('id ASC');
158-
return res.json({params: params, dataTypes: dataTypes});
158+
const dataTypes= yield DataType.find({ project:_.map(projects,'id') }).populate(['project','parents','superType']).sort('id ASC');
159+
if (params.id) {
160+
const dataType = _.find(dataTypes,{'id': parseInt(params.id)});
161+
isMultiProject = yield SuperTypeService.isMultiProject(dataType.superType);
162+
resObject.isMultiProject = isMultiProject;
163+
}
164+
resObject.params = params;
165+
resObject.dataTypes = dataTypes;
166+
return res.json(resObject);
159167
}),
160168

161169
destroy: BluebirdPromise.coroutine(function *(req, res, co) {
@@ -194,7 +202,7 @@ const DataTypeController = {
194202
find: function(req, res) {
195203
const co = new ControllerOut(res);
196204
coroutines.find(req, res)
197-
.catch(err => {
205+
.catch(/* istanbul ignore next */ function(err) {
198206
sails.log.error(err);
199207
return co.error(err);
200208
});
@@ -237,7 +245,7 @@ const DataTypeController = {
237245

238246
let co = new ControllerOut(res);
239247
coroutines.destroy(req,res,co)
240-
.catch(function(err) {
248+
.catch(/* istanbul ignore next */ function(err) {
241249
sails.log(err);
242250
return co.error(err);
243251
});
@@ -252,7 +260,7 @@ const DataTypeController = {
252260
edit: function(req, res) {
253261
let co = new ControllerOut(res);
254262
coroutines.edit(req,res)
255-
.catch(function(err) {
263+
.catch(/* istanbul ignore next */ function(err) {
256264
sails.log(err);
257265
return co.error(err);
258266
});

api/controllers/DataTypePrivilegesController.js

+9-7
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ let DataTypePrivilegesController = {
4040
return res.json(201, result);
4141
})
4242

43-
.catch(function(err) {
43+
.catch(/* istanbul ignore next */ function(err) {
4444
sails.log.error("DataTypePrivilegesController.create - got some error while creating new data type privileges");
4545
return co.error(err);
4646
});
@@ -62,12 +62,13 @@ let DataTypePrivilegesController = {
6262
query = actionUtil.populateRequest(query, req);
6363

6464
query.then(function(result) {
65-
65+
6666
return res.json(result);
6767
})
6868

69-
.catch(function(error) {
70-
return co.error(error);
69+
.catch(/* istanbul ignore next */ function(err) {
70+
sails.log.error(err);
71+
return co.error(err);
7172
});
7273

7374
},
@@ -145,7 +146,8 @@ let DataTypePrivilegesController = {
145146
return res.json({deleted: results && results.length});
146147
})
147148

148-
.catch(function(err) {
149+
.catch(/* istanbul ignore next */ function(err) {
150+
sails.log.error(err);
149151
return co.error(err);
150152
});
151153

@@ -177,8 +179,8 @@ let DataTypePrivilegesController = {
177179
return res.json(result);
178180
})
179181

180-
.catch(function(err) {
181-
sails.log(err);
182+
.catch(/* istanbul ignore next */ function(err) {
183+
sails.log.error(err);
182184
return co.error(err);
183185
});
184186

api/controllers/ProjectController.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ module.exports = {
6666
find: function(req, res) {
6767
const co = new ControllerOut(res);
6868
coroutines.find(req, res)
69-
.catch(err => {
69+
.catch(/* istanbul ignore next */ function(err) {
7070
sails.log.error(err);
7171
return co.error(err);
7272
});
@@ -81,7 +81,7 @@ module.exports = {
8181
edit: function(req, res) {
8282
const co = new ControllerOut(res);
8383
coroutines.edit(req, res)
84-
.catch(err => {
84+
.catch(/* istanbul ignore next */ function(err) {
8585
sails.log.error(err);
8686
return co.error(err);
8787
});

api/controllers/QueryController.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646

4747
})
4848

49-
.catch(error => {
49+
.catch(/* istanbul ignore next */ function(error) {
5050
sails.log.error(error);
5151
res.serverError(error.message);
5252
});

api/controllers/SampleController.js

+11-6
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* @help :: See http://links.sailsjs.org/docs/controllers
66
*/
77
/* jshint node: true */
8-
/* globals _, sails, Sample, DataType, SubjectService, BiobankService, SampleService, DataTypePrivileges, TokenService, QueryService, DataService, DataTypeService */
8+
/* globals _, sails, Sample, DataType, SubjectService, BiobankService, OperatorService, SampleService, DataTypePrivileges, TokenService, QueryService, DataService, DataTypeService */
99
"use strict";
1010

1111
const BluebirdPromise = require('bluebird');
@@ -38,7 +38,8 @@ const coroutines = {
3838
}
3939
SampleService.simplify(sample);
4040
const dataType = yield DataType.findOne(sample.type);
41-
const validationRes = SampleService.validate(sample, true, dataType);
41+
42+
const validationRes = yield SampleService.validate(sample, true, dataType);
4243
if (validationRes.error !== null) {
4344
throw new ValidationError(validationRes.error);
4445
}
@@ -114,7 +115,7 @@ const coroutines = {
114115
SampleService.simplify(sample);
115116

116117
const dataType = yield DataType.findOne(idSampleType);
117-
const validationRes = SampleService.validate(sample, true, dataType);
118+
const validationRes = yield SampleService.validate(sample, true, dataType);
118119
if (validationRes.error !== null) {
119120
throw new ValidationError(validationRes.error);
120121
}
@@ -176,6 +177,9 @@ const coroutines = {
176177

177178

178179
if (payload.sample){
180+
181+
let operators = yield OperatorService.getOwners(payload.sample);
182+
payload.operators = operators;
179183
// if operator has not access to Sensitive Data and dataType has sensitive data, then return forbidden
180184
const sensitiveRes = yield DataService.hasDataSensitive(payload.sample.id, SAMPLE);
181185
if (sensitiveRes && ((sensitiveRes.hasDataSensitive && !operator.canAccessSensitiveData))) {
@@ -220,8 +224,9 @@ module.exports = {
220224
findOne: function(req, res) {
221225
const co = new ControllerOut(res);
222226
coroutines.findOne(req,res)
223-
.catch(error => {
224-
return co.error(error);
227+
.catch(/* istanbul ignore next */ function(err) {
228+
sails.log.error(err);
229+
return co.error(err);
225230
});
226231

227232
},
@@ -237,7 +242,7 @@ module.exports = {
237242
find: function(req, res) {
238243
const co = new ControllerOut(res);
239244
coroutines.find(req,res)
240-
.catch(err => {
245+
.catch(/* istanbul ignore next */ function(err) {
241246
sails.log.error(err);
242247
return co.error(err);
243248
});

api/controllers/SubjectController.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* @help :: See http://links.sailsjs.org/docs/controllers
66
*/
77
/* jshint node: true */
8-
/* globals _, sails, DataTypePrivileges, Subject, DataType, SubjectService, TokenService, QueryService, DataService, DataTypeService */
8+
/* globals _, sails, DataTypePrivileges, Subject, DataType, SubjectService, OperatorService, TokenService, QueryService, DataService, DataTypeService */
99
"use strict";
1010

1111
const ControllerOut = require("xtens-utils").ControllerOut;
@@ -39,7 +39,7 @@ const coroutines = {
3939
SubjectService.simplify(subject);
4040
const dataType = yield DataType.findOne(subject.type);
4141

42-
const validationRes = SubjectService.validate(subject, true, dataType);
42+
const validationRes = yield SubjectService.validate(subject, true, dataType);
4343
if (validationRes.error !== null) {
4444
throw new ValidationError(validationRes.error);
4545
}
@@ -123,7 +123,7 @@ const coroutines = {
123123
SubjectService.simplify(subject);
124124

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

180180
if (payload.subject){
181+
let operators = yield OperatorService.getOwners(payload.subject);
182+
payload.operators = operators;
181183
// if operator has not access to Sensitive Data and dataType has sensitive data, then return forbidden
182184
const sensitiveRes = yield DataService.hasDataSensitive(payload.subject.id, SUBJECT);
183185
if (sensitiveRes && ((sensitiveRes.hasDataSensitive && !operator.canAccessSensitiveData))) {
+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* SuperTypeController
3+
*
4+
* @description :: Server-side logic for managing supertypes
5+
* @help :: See http://links.sailsjs.org/docs/controllers
6+
*/
7+
/* jshint node: true */
8+
/* globals _, sails, SuperType, SuperTypeService, TokenService, Group, Project */
9+
"use strict";
10+
11+
const ControllerOut = require("xtens-utils").ControllerOut, ValidationError = require('xtens-utils').Errors.ValidationError;
12+
const PrivilegesError = require('xtens-utils').Errors.PrivilegesError;
13+
const crudManager = sails.hooks.persistence.crudManager;
14+
const actionUtil = require('sails/lib/hooks/blueprints/actionUtil');
15+
const BluebirdPromise = require('bluebird');
16+
17+
const coroutines = {
18+
19+
20+
};
21+
22+
23+
24+
const SuperTypeController = {
25+
26+
27+
28+
29+
};
30+
31+
module.exports = SuperTypeController;

0 commit comments

Comments
 (0)