9ccff7646dc3dae193c3eaf8248796c823f9377c
[portal/sdk.git] /
1 /*-
2  * ================================================================================
3  * ECOMP Portal SDK
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ================================================================================
19  */
20 package org.openecomp.portalapp.controller.core;
21
22 import java.io.PrintWriter;
23 import java.util.HashMap;
24 import java.util.Map;
25
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28
29 import org.json.JSONObject;
30 import org.openecomp.portalsdk.core.controller.RestrictedBaseController;
31 import org.openecomp.portalsdk.core.domain.Role;
32 import org.openecomp.portalsdk.core.domain.User;
33 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
34 import org.openecomp.portalsdk.core.service.RoleService;
35 import org.openecomp.portalsdk.core.web.support.JsonMessage;
36 import org.openecomp.portalsdk.core.web.support.UserUtils;
37 import org.springframework.beans.factory.annotation.Autowired;
38 import org.springframework.stereotype.Controller;
39 import org.springframework.web.bind.annotation.RequestMapping;
40 import org.springframework.web.bind.annotation.RequestMethod;
41 import org.springframework.web.servlet.ModelAndView;
42
43 import com.fasterxml.jackson.databind.DeserializationFeature;
44 import com.fasterxml.jackson.databind.JsonNode;
45 import com.fasterxml.jackson.databind.ObjectMapper;
46
47 @Controller
48 @RequestMapping("/")
49 public class RoleListController extends RestrictedBaseController {
50
51         
52         private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(RoleListController.class);
53         @Autowired
54         RoleService service;
55         
56         private String viewName;
57         
58         @RequestMapping(value = {"/role_list" }, method = RequestMethod.GET)
59         public ModelAndView getRoleList(HttpServletRequest request) {
60                 Map<String, Object> model = new HashMap<String, Object>();
61                 ObjectMapper mapper = new ObjectMapper();       
62                 User user = UserUtils.getUserSession(request);
63
64                 
65                 try {
66                         model.put("availableRoles", mapper.writeValueAsString(service.getAvailableRoles(user.getOrgUserId())));
67                 } catch (Exception e) {
68                         logger.error(EELFLoggerDelegate.errorLogger, "getRoleList failed", e);
69                 }
70         
71                 return new ModelAndView(getViewName(),model);
72         }
73         
74         @RequestMapping(value = {"/get_roles" }, method = RequestMethod.GET)
75         public void getRoles(HttpServletRequest request, HttpServletResponse response) {
76                 Map<String, Object> model = new HashMap<String, Object>();
77                 ObjectMapper mapper = new ObjectMapper();
78                 User user = UserUtils.getUserSession(request);
79
80                 
81                 try {
82                         model.put("availableRoles", mapper.writeValueAsString(service.getAvailableRoles(user.getOrgUserId())));
83                         JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
84                         JSONObject j = new JSONObject(msg);
85                         response.getWriter().write(j.toString());       
86                 } catch (Exception e) {
87                         logger.error(EELFLoggerDelegate.errorLogger, "getRoles failed", e);
88                 }
89         }
90         
91         
92         @RequestMapping(value = {"/role_list/toggleRole" }, method = RequestMethod.POST)
93         public ModelAndView toggleRole(HttpServletRequest request, 
94                         HttpServletResponse response) throws Exception {
95                 User user = UserUtils.getUserSession(request);
96
97
98                 try {
99                         ObjectMapper mapper = new ObjectMapper();
100                         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
101                         JsonNode root = mapper.readTree(request.getReader());
102                         Role role = mapper.readValue(root.get("role").toString(), Role.class);
103
104                         Role domainRole = service.getRole(user.getOrgUserId(),role.getId());
105                         //role. toggle active ind
106                         boolean active = domainRole.getActive();
107                         domainRole.setActive(!active);
108                         
109                         service.saveRole(user.getOrgUserId(),domainRole);
110                         logger.info(EELFLoggerDelegate.auditLogger, "Toggle active status for role " + domainRole.getId());
111
112                         response.setCharacterEncoding("UTF-8");
113                         response.setContentType("application / json");
114                         request.setCharacterEncoding("UTF-8");
115
116                         PrintWriter out = response.getWriter();
117                         String responseString = mapper.writeValueAsString(service.getAvailableRoles(user.getOrgUserId()));
118                         JSONObject j = new JSONObject("{availableRoles: "+responseString+"}");
119                         
120                         out.write(j.toString());
121                         
122                         return null;
123                 } catch (Exception e) {
124                         logger.error(EELFLoggerDelegate.errorLogger, "toggleRole failed", e);
125                         response.setCharacterEncoding("UTF-8");
126                         request.setCharacterEncoding("UTF-8");
127                         PrintWriter out = response.getWriter();
128                         out.write(e.getMessage());
129                         return null;
130                 }
131
132         }
133         
134         @RequestMapping(value = {"/role_list/removeRole" }, method = RequestMethod.POST)
135         public ModelAndView removeRole(HttpServletRequest request, 
136                         HttpServletResponse response) throws Exception {
137                 User user = UserUtils.getUserSession(request);
138
139                 try {
140
141                         ObjectMapper mapper = new ObjectMapper();
142                         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
143                         JsonNode root = mapper.readTree(request.getReader());
144                         Role role = mapper.readValue(root.get("role").toString(), Role.class);
145
146                         Role domainRole = service.getRole(user.getOrgUserId(),role.getId());
147                                                 
148                         service.deleteDependcyRoleRecord(user.getOrgUserId(),role.getId());
149                         service.deleteRole(user.getOrgUserId(),domainRole);
150                         logger.info(EELFLoggerDelegate.auditLogger, "Remove role " + domainRole.getId());
151
152                         response.setCharacterEncoding("UTF-8");
153                         response.setContentType("application / json");
154                         request.setCharacterEncoding("UTF-8");
155
156                         PrintWriter out = response.getWriter();
157                         
158                         String responseString = mapper.writeValueAsString(service.getAvailableRoles(user.getOrgUserId()));
159                         JSONObject j = new JSONObject("{availableRoles: "+responseString+"}");
160                         out.write(j.toString());
161                         
162                         return null;
163                 } catch (Exception e) {
164                         logger.error(EELFLoggerDelegate.errorLogger, "removeRole failed", e);
165                         response.setCharacterEncoding("UTF-8");
166                         request.setCharacterEncoding("UTF-8");
167                         PrintWriter out = response.getWriter();
168                         out.write(e.getMessage());
169                         return null;
170                 }
171
172         }
173
174         public String getViewName() {
175                 return viewName;
176         }
177         public void setViewName(String viewName) {
178                 this.viewName = viewName;
179         }
180 }