added azure related code
[it/otf.git] / otf-frontend / server / src / feathers / hooks / permissions / permissions.js
index 3659bde..14e764e 100644 (file)
@@ -140,22 +140,25 @@ permissions = function (name = null) {
                        return context;\r
                }\r
 \r
-               const params = Object.assign({}, context.params, { provider: null });\r
+               //see if the entity has already been pulled and stored, else get it\r
+               if(!context.params.entityData){\r
+                       const params = Object.assign({}, context.params, { provider: null });\r
+                       context.params.entityData = await service.get(context.id, params);\r
+               }\r
 \r
-               const result = await service.get(context.id, params);\r
-               throwUnlessCan(action, result);\r
+               throwUnlessCan(action, context.params.entityData);\r
 \r
                if (action === 'get') {\r
-                       context.result = pick(result, allowedFields);\r
+                       context.result = pick(context.params.entityData, allowedFields);\r
                }else{\r
                        if(context.data){\r
                                Object.keys(context.data).forEach(key => {\r
                                        if(key == "$push"){\r
                                                Object.keys(context.data['$push']).forEach(k => {\r
-                                                       throwUnlessCan(action, result, k);\r
+                                                       throwUnlessCan(action, context.params.entityData, k);\r
                                                });\r
                                        }else{\r
-                                               throwUnlessCan(action, result, key);\r
+                                               throwUnlessCan(action, context.params.entityData, key);\r
                                        }\r
                                })\r
                        }\r