comparison src/main/java/de/mpiwg/gazetteer/servlet/GetRoleAssignments.java @ 12:c2e2d794847f

new: add config.properties file for gazetteer
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Wed, 30 Sep 2015 13:43:54 +0200
parents
children
comparison
equal deleted inserted replaced
11:08c950a22cee 12:c2e2d794847f
1 package de.mpiwg.gazetteer.servlet;
2
3 import static edu.harvard.iq.dataverse.util.JsfHelper.JH;
4
5 import java.io.IOException;
6 import java.util.ArrayList;
7 import java.util.LinkedList;
8 import java.util.List;
9 import java.util.Set;
10 import java.util.logging.Level;
11 import java.util.logging.Logger;
12
13 import javax.ejb.EJB;
14 import javax.servlet.ServletException;
15 import javax.servlet.http.HttpServletRequest;
16 import javax.servlet.http.HttpServletResponse;
17
18 import org.apache.commons.lang.StringUtils;
19 import org.primefaces.json.JSONArray;
20 import org.primefaces.json.JSONException;
21 import org.primefaces.json.JSONObject;
22
23 import edu.harvard.iq.dataverse.DataFile;
24 import edu.harvard.iq.dataverse.Dataverse;
25 import edu.harvard.iq.dataverse.DataverseRoleServiceBean;
26 import edu.harvard.iq.dataverse.DvObject;
27 import edu.harvard.iq.dataverse.DvObjectServiceBean;
28 import edu.harvard.iq.dataverse.RoleAssigneeServiceBean;
29 import edu.harvard.iq.dataverse.RoleAssignment;
30 import edu.harvard.iq.dataverse.ManagePermissionsPage.RoleAssignmentRow;
31 import edu.harvard.iq.dataverse.authorization.AuthenticationRequest;
32 import edu.harvard.iq.dataverse.authorization.CredentialsAuthenticationProvider;
33 import edu.harvard.iq.dataverse.authorization.Permission;
34 import edu.harvard.iq.dataverse.authorization.RoleAssignee;
35 import edu.harvard.iq.dataverse.authorization.RoleAssigneeDisplayInfo;
36 import edu.harvard.iq.dataverse.authorization.exceptions.AuthenticationFailedException;
37 import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser;
38
39
40 public class GetRoleAssignments extends AbstractMonographServlet{
41
42
43 private static final Logger logger = Logger.getLogger(GetRoleAssignments.class.getName());
44
45 @EJB
46 DvObjectServiceBean dvObjectService;
47 @EJB
48 DataverseRoleServiceBean roleService;
49 @EJB
50 RoleAssigneeServiceBean roleAssigneeService;
51
52 public List<JSONObject> getRoleAssignments (String datasetId) {
53
54 List<JSONObject> raList = new ArrayList<JSONObject>();
55
56 DvObject dvObject = dvObjectService.findDvObject(Long.parseLong(datasetId));
57
58 if (dvObject != null && dvObject.getId() != null) {
59 Set<RoleAssignment> ras = roleService.rolesAssignments(dvObject);
60
61 for (RoleAssignment roleAssignment : ras) {
62
63 RoleAssignee roleAssignee = roleAssigneeService.getRoleAssignee(roleAssignment.getAssigneeIdentifier());
64 if (roleAssignee != null) {
65
66 try {
67 JSONObject aroleAssignment = new JSONObject();
68 aroleAssignment.put("roleAssignment", roleAssignment);
69 raList.add(aroleAssignment);
70
71
72 } catch (JSONException e) {
73
74 e.printStackTrace();
75 }
76
77 } else {
78 logger.info("Could not find role assignee based on role assignment id " + roleAssignment.getId());
79 }
80
81 }
82 }
83
84 return raList;
85 }
86
87
88
89 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
90 // Set response content type
91 response.setContentType("application/json");
92 JSONObject jsonResponse = new JSONObject();
93
94 String user = request.getParameter("user");
95 String password = request.getParameter("password");
96 String datasetId = request.getParameter("datasetId");
97
98 if(StringUtils.isNotEmpty(user) && StringUtils.isNotEmpty(password)){
99
100 // authenticate checking. TODO use GetUser.java or something like that to do the authenticate checking.
101 AuthenticationRequest authReq = new AuthenticationRequest();
102 authReq.putCredential("Username", user);
103 authReq.putCredential("Password", password);
104 try {
105 String credentialsAuthProviderId = "builtin";
106 this.authUser = authSvc.authenticate(credentialsAuthProviderId, authReq);
107 System.out.println("User authenticated: " + authUser.getIdentifier());
108 } catch (AuthenticationFailedException ex) {
109 ex.printStackTrace();
110 return;
111 }
112 if(authUser == null){
113 try {
114 jsonResponse.put("state", "error");
115 jsonResponse.put("error", "User " + user + " no found.");
116 } catch (JSONException e) {
117
118 e.printStackTrace();
119 }
120 } else {
121 // get roleAssignments
122 try {
123 jsonResponse.put("state", "ok");
124
125 List<JSONObject> raJson = getRoleAssignments(datasetId);
126 // raJson contains all roleAssignments in the dataset
127 // find the roleAssignment for the user
128 JSONArray assignments = new JSONArray();
129
130
131 for (int i = 0; i < raJson.size(); i++) {
132
133 RoleAssignment aUser = (RoleAssignment) raJson.get(i).get("roleAssignment");
134
135 JSONObject assignment = new JSONObject();
136 assignment.put("identifier", aUser.getAssigneeIdentifier());
137 assignment.put("roleName", aUser.getRole().getName());
138
139 assignments.put(assignment);
140
141 }
142
143 jsonResponse.put("roleAssignments", assignments);
144
145 } catch (JSONException e) {
146
147 e.printStackTrace();
148 }
149 }
150
151 } else {
152 try {
153 jsonResponse.put("state", "error");
154 jsonResponse.put("error", "Request error. Parameters 'user' and 'password' are mandatory");
155 } catch (Exception e) {
156 e.printStackTrace();
157 }
158 }
159
160 // ======================
161
162
163 java.io.PrintWriter out = response.getWriter();
164 out.print(jsonResponse);
165 out.flush();
166
167
168
169 }
170 }