annotate servlet/src/digilib/auth/AuthOpsImpl.java @ 636:7049579a0097 jquery

last and next page works now implemented redisplay function (only tested with fullscreen) parameters that are changed need to be in data.queryParams to get in the url on redisplay
author robcast
date Tue, 18 Jan 2011 21:30:03 +0100
parents e758a49258e8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
1 /* AuthOps -- Authentication class implementation
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
2
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
3 Digital Image Library servlet components
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
4
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
5 Copyright (C) 2001, 2002 Robert Casties (robcast@mail.berlios.de)
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
6
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
7 This program is free software; you can redistribute it and/or modify it
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
9 Free Software Foundation; either version 2 of the License, or (at your
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
10 option) any later version.
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
11
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
12 Please read license.txt for the full details. A copy of the GPL
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
13 may be found at http://www.gnu.org/copyleft/lgpl.html
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
14
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
15 You should have received a copy of the GNU General Public License
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
16 along with this program; if not, write to the Free Software
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
18
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
19 */
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
20
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
21 package digilib.auth;
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
22
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 73
diff changeset
23 import java.util.List;
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 73
diff changeset
24
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
25 import javax.servlet.http.HttpServletRequest;
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
26
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 73
diff changeset
27 import org.apache.log4j.Logger;
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 73
diff changeset
28
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
29 import digilib.servlet.DigilibRequest;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
30
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
31 /** Basic implementation of AuthOps interface.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
32 *
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
33 * Provides basic implementations. Only rolesForPath needs to be implemented
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
34 * by specific implementations.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
35 */
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
36 public abstract class AuthOpsImpl implements AuthOps {
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
37
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 73
diff changeset
38 /** general logger for this class */
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 73
diff changeset
39 protected Logger logger = Logger.getLogger(this.getClass());
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 73
diff changeset
40
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
41 /** Default constructor. */
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
42 public AuthOpsImpl() {
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
43 try {
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
44 init();
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
45 } catch (AuthOpException e) {
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
46 }
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
47 }
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
48
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
49
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
50 /** Test if the request is allowed to access filepath.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
51 * @param filepath filepath to be acessed.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
52 * @param request Request with user information.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
53 * @throws AuthOpException Exception thrown on error.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
54 * @return true if the request is allowed.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
55 */
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
56 public boolean isAuthRequired(String filepath, HttpServletRequest request) throws AuthOpException {
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
57 // check permissions
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents: 1
diff changeset
58 List<String> rolesRequired = rolesForPath(filepath, request);
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
59 return (rolesRequired != null);
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
60 }
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
61
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
62 /**
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
63 * @see digilib.auth.AuthOps#isAuthRequired(digilib.servlet.DigilibRequest)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
64 */
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
65 public boolean isAuthRequired(DigilibRequest request)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
66 throws AuthOpException {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
67 // check permissions
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents: 1
diff changeset
68 List<String> rolesRequired = rolesForPath(request);
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
69 return (rolesRequired != null);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
70 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
71
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
72 /** Return authorization roles needed for request.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
73 *
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
74 * Returns a list of authorization roles that would be allowed to access the
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
75 * specified path. The location information of the request is considered also.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
76 * @param filepath filepath to be accessed.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
77 * @param request ServletRequest with address information.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
78 * @throws AuthOpException Exception thrown on error.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
79 * @return List of Strings with role names.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
80 */
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
81 public boolean isAuthorized(String filepath, HttpServletRequest request) throws AuthOpException {
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents: 1
diff changeset
82 List<String> rolesAllowed = rolesForPath(filepath, request);
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
83 return isRoleAuthorized(rolesAllowed, request);
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
84 }
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
85
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
86 /**
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
87 * @see digilib.auth.AuthOps#isAuthorized(digilib.servlet.DigilibRequest)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
88 */
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
89 public boolean isAuthorized(DigilibRequest request)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
90 throws AuthOpException {
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents: 1
diff changeset
91 List<String> rolesAllowed = rolesForPath(request);
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
92 return isRoleAuthorized(rolesAllowed, request);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
93 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
94
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
95 /** Test request authorization against a list of roles.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
96 * @param roles List of Strings with role names.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
97 * @param request ServletRequest with address information.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
98 * @return true if the user information in the request authorizes one of the roles.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
99 */
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents: 1
diff changeset
100 public boolean isRoleAuthorized(List<String> roles, HttpServletRequest request) {
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents: 1
diff changeset
101 for (String s: roles) {
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 73
diff changeset
102 logger.debug("Testing role: "+s);
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
103 if (request.isUserInRole(s)) {
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 73
diff changeset
104 logger.debug("Role Authorized");
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
105 return true;
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
106 }
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
107 }
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
108 return false;
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
109 }
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
110
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
111 /**
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
112 * @see digilib.auth.AuthOps#isRoleAuthorized(java.util.List, digilib.servlet.DigilibRequest)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
113 */
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents: 1
diff changeset
114 public boolean isRoleAuthorized(List<String> roles, DigilibRequest request) {
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents: 1
diff changeset
115 for (String s: roles) {
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 73
diff changeset
116 logger.debug("Testing role: "+s);
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
117 if (((HttpServletRequest)request.getServletRequest()).isUserInRole(s)) {
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 73
diff changeset
118 logger.debug("Role Authorized");
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
119 return true;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
120 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
121 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
122 return false;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
123 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
124
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
125 public abstract void init() throws AuthOpException;
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
126
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents: 1
diff changeset
127 public abstract List<String> rolesForPath(String filepath, HttpServletRequest request) throws AuthOpException;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
128
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents: 1
diff changeset
129 public abstract List<String> rolesForPath(DigilibRequest request) throws AuthOpException;
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 1
diff changeset
130
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
131 }