5
5
* @help :: See http://links.sailsjs.org/docs/controllers
6
6
*/
7
7
/* 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 */
9
9
"use strict" ;
10
10
11
11
const BluebirdPromise = require ( 'bluebird' ) ;
@@ -38,8 +38,8 @@ const coroutines = {
38
38
throw new PrivilegesError ( `Authenticated user has not edit privileges on the data type ${ data . type } ` ) ;
39
39
}
40
40
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 ) ;
43
43
if ( validationRes . error !== null ) {
44
44
throw new ValidationError ( validationRes . error ) ;
45
45
}
@@ -103,6 +103,7 @@ const coroutines = {
103
103
const operator = TokenService . getToken ( req ) ;
104
104
105
105
let result = yield DataService . hasDataSensitive ( data . id , DATA ) ;
106
+ console . log ( result , operator ) ;
106
107
if ( result . hasDataSensitive && ! operator . canAccessSensitiveData ) {
107
108
throw new PrivilegesError ( "Authenticated user is not allowed to modify sensitive data" ) ;
108
109
}
@@ -114,8 +115,8 @@ const coroutines = {
114
115
}
115
116
DataService . simplify ( data ) ;
116
117
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 ) ;
119
120
if ( validationRes . error !== null ) {
120
121
throw new ValidationError ( validationRes . error ) ;
121
122
}
@@ -175,6 +176,8 @@ const coroutines = {
175
176
if ( _ . isEmpty ( payload . dataTypes ) ) { throw new PrivilegesError ( `Authenticated user has not edit privileges on any data type` ) ; }
176
177
177
178
if ( payload . data ) {
179
+ let operators = yield OperatorService . getOwners ( payload . data ) ;
180
+ payload . operators = operators ;
178
181
// if operator has not access to Sensitive Data and dataType has sensitive data, then return forbidden
179
182
const sensitiveRes = yield DataService . hasDataSensitive ( payload . data . id , DATA ) ;
180
183
if ( sensitiveRes && ( ( sensitiveRes . hasDataSensitive && ! operator . canAccessSensitiveData ) ) ) {
@@ -221,7 +224,7 @@ module.exports = {
221
224
findOne : function ( req , res ) {
222
225
const co = new ControllerOut ( res ) ;
223
226
coroutines . findOne ( req , res )
224
- . catch ( error => {
227
+ . catch ( /* istanbul ignore next */ function ( error ) {
225
228
sails . log . error ( "DataController.findOne: " + error . message ) ;
226
229
return co . error ( error ) ;
227
230
} ) ;
@@ -239,8 +242,8 @@ module.exports = {
239
242
find : function ( req , res ) {
240
243
const co = new ControllerOut ( res ) ;
241
244
coroutines . find ( req , res )
242
- . catch ( function ( err ) {
243
- sails . log . error ( err ) ;
245
+ . catch ( /* istanbul ignore next */ function ( err ) {
246
+ sails . log ( err ) ;
244
247
return co . error ( err ) ;
245
248
} ) ;
246
249
} ,
0 commit comments