1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.custom.security;
20
21 import javax.faces.context.FacesContext;
22 import javax.faces.el.EvaluationException;
23 import javax.faces.el.VariableResolver;
24
25
26
27
28
29 public class SecurityContextVariableResolver extends VariableResolver{
30
31 private static final String SECURITY_CONTEXT = "securityContext";
32 private static final String INIT_PARAM_SECURITY_CONTEXT = "org.apache.myfaces.SECURITY_CONTEXT";
33
34 private VariableResolver originalResolver;
35
36 public SecurityContextVariableResolver(VariableResolver variableresolver) {
37 originalResolver = variableresolver;
38 }
39
40 public Object resolveVariable(FacesContext facesContext, String name) throws EvaluationException {
41 if(SECURITY_CONTEXT.equals(name)) {
42 return getSecurityContextImpl(facesContext);
43 }
44 else {
45 return originalResolver.resolveVariable(facesContext, name);
46 }
47 }
48
49 private Object getSecurityContextImpl(FacesContext facesContext) {
50 String className = (String) facesContext.getExternalContext().getInitParameter(INIT_PARAM_SECURITY_CONTEXT);
51
52 if(className == null)
53 return new SecurityContextImpl();
54
55 try {
56 Class clazz = Class.forName(className);
57 return clazz.newInstance();
58 }catch(Exception e) {
59 throw new EvaluationException(e);
60 }
61 }
62
63 }