added svcapi ui and camunda code
[it/otf.git] / otf-frontend / server / src / feathers / hooks / checkPermissions.js
1 /*  Copyright (c) 2019 AT&T Intellectual Property.                             #\r
2 #                                                                              #\r
3 #   Licensed under the Apache License, Version 2.0 (the "License");            #\r
4 #   you may not use this file except in compliance with the License.           #\r
5 #   You may obtain a copy of the License at                                    #\r
6 #                                                                              #\r
7 #       http://www.apache.org/licenses/LICENSE-2.0                             #\r
8 #                                                                              #\r
9 #   Unless required by applicable law or agreed to in writing, software        #\r
10 #   distributed under the License is distributed on an "AS IS" BASIS,          #\r
11 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #\r
12 #   See the License for the specific language governing permissions and        #\r
13 #   limitations under the License.                                             #\r
14 ##############################################################################*/\r
15 \r
16 \r
17 module.exports = function () {\r
18     return async context => {\r
19                 let group = {};\r
20                 if(context.data.parentGroupId){\r
21                         //get the groups from the group service\r
22                         //check if the user is an Admin in the parent group \r
23                         await context.app.services[context.app.get('base-path') + 'groups']\r
24                         .get(context.data.parentGroupId, context.params)\r
25                         .then( result => {      \r
26                                 group = result;\r
27                         });\r
28                         \r
29                         if(group.members){\r
30                                 for(let i = 0; i < group.members.length; i++){\r
31                                         if(group.members[i].userId.toString() === context.params.user._id.toString()){\r
32                                                 if(!group.members[i].roles.includes("admin")){\r
33                                                         throw new Error('Can not create child group. You must be an admin of the parent group.');\r
34                                                 }\r
35                                         }\r
36                                 }\r
37                         }else{\r
38                                 throw new Error('Can not create child group. You must be an admin of the parent group.');\r
39                         }\r
40                 }\r
41         }\r
42 }