1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.jetspeed.profiler.rules.impl;
18
19 import java.security.Principal;
20
21 import javax.security.auth.Subject;
22
23 import org.apache.commons.logging.Log;
24 import org.apache.commons.logging.LogFactory;
25 import org.apache.jetspeed.profiler.rules.RuleCriterion;
26 import org.apache.jetspeed.profiler.rules.RuleCriterionResolver;
27 import org.apache.jetspeed.request.RequestContext;
28 import org.apache.jetspeed.security.SecurityHelper;
29 import org.apache.jetspeed.security.UserPrincipal;
30
31 /***
32 * Standard Jetspeed-1 User resolver.
33 * It first looks at the value in the criterion record.
34 * If it is null, it then falls back to a request parameter.
35 * If it is null it gives up and returns null allowing subclasses
36 * to continue processing.
37 *
38 * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
39 * @version $Id: UserCriterionResolver.java 516448 2007-03-09 16:25:47Z ate $
40 */
41 public class UserCriterionResolver
42 extends StandardResolver
43 implements RuleCriterionResolver
44 {
45 protected final static Log log = LogFactory.getLog(UserCriterionResolver.class);
46
47
48
49
50 public String resolve(RequestContext context, RuleCriterion criterion)
51 {
52 String value = super.resolve(context, criterion);
53 if (value != null)
54 {
55 return value;
56 }
57
58 Subject subject = context.getSubject();
59 if (subject == null)
60 {
61 String msg = "Invalid (null) Subject in request pipeline";
62 log.error(msg);
63 return null;
64 }
65
66 Principal principal = SecurityHelper.getPrincipal(subject, UserPrincipal.class);
67 if (principal != null)
68 {
69 return principal.getName();
70 }
71 return null;
72 }
73
74
75
76
77 public boolean isControl(RuleCriterion criterion)
78 {
79 return true;
80 }
81
82
83 }