4314 |
20 Jan 17 |
nicklas |
1 |
package net.sf.basedb.opengrid.servlet; |
4314 |
20 Jan 17 |
nicklas |
2 |
|
4314 |
20 Jan 17 |
nicklas |
3 |
import java.io.BufferedReader; |
4314 |
20 Jan 17 |
nicklas |
4 |
import java.io.IOException; |
4314 |
20 Jan 17 |
nicklas |
5 |
import java.io.InputStreamReader; |
4314 |
20 Jan 17 |
nicklas |
6 |
import java.io.Reader; |
4314 |
20 Jan 17 |
nicklas |
7 |
import java.nio.charset.Charset; |
4314 |
20 Jan 17 |
nicklas |
8 |
|
4314 |
20 Jan 17 |
nicklas |
9 |
import javax.servlet.ServletRequest; |
4314 |
20 Jan 17 |
nicklas |
10 |
import javax.servlet.http.HttpServletRequest; |
4314 |
20 Jan 17 |
nicklas |
11 |
import javax.servlet.http.HttpServletResponse; |
4314 |
20 Jan 17 |
nicklas |
12 |
|
4314 |
20 Jan 17 |
nicklas |
13 |
|
4314 |
20 Jan 17 |
nicklas |
14 |
import org.json.simple.JSONObject; |
4314 |
20 Jan 17 |
nicklas |
15 |
import org.json.simple.parser.JSONParser; |
4314 |
20 Jan 17 |
nicklas |
16 |
import org.json.simple.parser.ParseException; |
4314 |
20 Jan 17 |
nicklas |
17 |
|
4314 |
20 Jan 17 |
nicklas |
18 |
import net.sf.basedb.clients.web.Base; |
4314 |
20 Jan 17 |
nicklas |
19 |
import net.sf.basedb.clients.web.extensions.ExtensionsControl; |
4314 |
20 Jan 17 |
nicklas |
20 |
import net.sf.basedb.core.Application; |
4314 |
20 Jan 17 |
nicklas |
21 |
import net.sf.basedb.core.DbControl; |
4314 |
20 Jan 17 |
nicklas |
22 |
import net.sf.basedb.core.Permission; |
4314 |
20 Jan 17 |
nicklas |
23 |
import net.sf.basedb.core.PermissionDeniedException; |
4314 |
20 Jan 17 |
nicklas |
24 |
import net.sf.basedb.core.SessionControl; |
4314 |
20 Jan 17 |
nicklas |
25 |
|
4314 |
20 Jan 17 |
nicklas |
26 |
/** |
4314 |
20 Jan 17 |
nicklas |
Utility functions for servlets. |
4314 |
20 Jan 17 |
nicklas |
@since 1.0 |
4314 |
20 Jan 17 |
nicklas |
29 |
*/ |
4314 |
20 Jan 17 |
nicklas |
30 |
public class ServletUtil |
4314 |
20 Jan 17 |
nicklas |
31 |
{ |
4314 |
20 Jan 17 |
nicklas |
32 |
|
4314 |
20 Jan 17 |
nicklas |
33 |
/** |
4314 |
20 Jan 17 |
nicklas |
Get an existing session control and check that a user is logged in. |
4314 |
20 Jan 17 |
nicklas |
35 |
*/ |
4314 |
20 Jan 17 |
nicklas |
36 |
public static SessionControl getSessionControl(ServletRequest req) |
4314 |
20 Jan 17 |
nicklas |
37 |
{ |
4314 |
20 Jan 17 |
nicklas |
38 |
return Application.getSessionControl(req.getParameter("ID"), Base.WEBCLIENT_ID, req.getRemoteAddr(), true); |
4314 |
20 Jan 17 |
nicklas |
39 |
} |
4314 |
20 Jan 17 |
nicklas |
40 |
|
4314 |
20 Jan 17 |
nicklas |
41 |
/** |
4314 |
20 Jan 17 |
nicklas |
Set proper response headers for returning a JSON response. |
4314 |
20 Jan 17 |
nicklas |
This sets the content type to: application/json;charset=UTF8 |
4314 |
20 Jan 17 |
nicklas |
and disable caching of the responses. |
4314 |
20 Jan 17 |
nicklas |
45 |
*/ |
4314 |
20 Jan 17 |
nicklas |
46 |
public static void setJsonResponseHeaders(HttpServletResponse resp) |
4314 |
20 Jan 17 |
nicklas |
47 |
{ |
4314 |
20 Jan 17 |
nicklas |
48 |
resp.setContentType("application/json"); |
4314 |
20 Jan 17 |
nicklas |
49 |
resp.setCharacterEncoding("UTF-8"); |
4314 |
20 Jan 17 |
nicklas |
50 |
resp.setHeader("Cache-Control", "no-cache, max-age=0"); |
4314 |
20 Jan 17 |
nicklas |
51 |
} |
4314 |
20 Jan 17 |
nicklas |
52 |
|
4314 |
20 Jan 17 |
nicklas |
53 |
/** |
4314 |
20 Jan 17 |
nicklas |
Parse the request as JSON data. |
4314 |
20 Jan 17 |
nicklas |
55 |
*/ |
4314 |
20 Jan 17 |
nicklas |
56 |
public static JSONObject parseRequest(HttpServletRequest request) |
4314 |
20 Jan 17 |
nicklas |
57 |
throws IOException, ParseException |
4314 |
20 Jan 17 |
nicklas |
58 |
{ |
4314 |
20 Jan 17 |
nicklas |
59 |
Reader reader = new BufferedReader(new InputStreamReader(request.getInputStream(), Charset.forName("UTF-8"))); |
4314 |
20 Jan 17 |
nicklas |
60 |
JSONObject json = (JSONObject)new JSONParser().parse(reader); |
4314 |
20 Jan 17 |
nicklas |
61 |
return json; |
4314 |
20 Jan 17 |
nicklas |
62 |
} |
4314 |
20 Jan 17 |
nicklas |
63 |
|
4314 |
20 Jan 17 |
nicklas |
64 |
/** |
4314 |
20 Jan 17 |
nicklas |
Checks if the currently logged in user has permission to manage |
4314 |
20 Jan 17 |
nicklas |
Open Grid Clusters (=WRITE permission for the extension system). |
4314 |
20 Jan 17 |
nicklas |
67 |
*/ |
4314 |
20 Jan 17 |
nicklas |
68 |
public static void checkPermission(DbControl dc) |
4314 |
20 Jan 17 |
nicklas |
69 |
{ |
4314 |
20 Jan 17 |
nicklas |
70 |
if (!ExtensionsControl.get(dc).hasPermission(Permission.WRITE)) |
4314 |
20 Jan 17 |
nicklas |
71 |
{ |
4314 |
20 Jan 17 |
nicklas |
72 |
throw new PermissionDeniedException("You are not allowed to manage Open Grid Clusters."); |
4314 |
20 Jan 17 |
nicklas |
73 |
} |
4314 |
20 Jan 17 |
nicklas |
74 |
} |
4314 |
20 Jan 17 |
nicklas |
75 |
} |