1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.captcha.service;
35
36 import fr.paris.lutece.portal.service.captcha.ICaptchaService;
37 import fr.paris.lutece.portal.service.datastore.DatastoreService;
38 import fr.paris.lutece.portal.service.spring.SpringContextService;
39
40 import java.util.ArrayList;
41 import java.util.List;
42
43 import javax.servlet.http.HttpServletRequest;
44
45 import org.apache.commons.lang3.StringUtils;
46
47
48
49
50 public class CaptchaService implements ICaptchaService
51 {
52 public static final String BEAN_NAME = "captcha.captchaService";
53
54 private static final String DATASTORE_KEY_DEFAULT_CAPTCHA_ENGINE = "captcha.defaultProvider";
55
56
57
58
59 @Override
60 public boolean validate( HttpServletRequest request )
61 {
62 List<ICaptchaEngine> listCaptchaEngine = SpringContextService.getBeansOfType( ICaptchaEngine.class );
63 if ( listCaptchaEngine != null && listCaptchaEngine.size( ) > 0 )
64 {
65 String strDefaultCaptchaEngineName = getDefaultCaptchaEngineName( );
66 for ( ICaptchaEngine captchaImpl : listCaptchaEngine )
67 {
68 if ( StringUtils.equals( strDefaultCaptchaEngineName, captchaImpl.getCaptchaEngineName( ) ) )
69 {
70 return captchaImpl.validate( request );
71 }
72 }
73 }
74
75 return true;
76 }
77
78
79
80
81 @Override
82 public String getHtmlCode( )
83 {
84 List<ICaptchaEngine> listCaptchaEngine = SpringContextService.getBeansOfType( ICaptchaEngine.class );
85 if ( listCaptchaEngine != null && listCaptchaEngine.size( ) > 0 )
86 {
87 String strDefaultCaptchaEngineName = getDefaultCaptchaEngineName( );
88 for ( ICaptchaEngine captchaImpl : listCaptchaEngine )
89 {
90 if ( StringUtils.equals( strDefaultCaptchaEngineName, captchaImpl.getCaptchaEngineName( ) ) )
91 {
92 return captchaImpl.getHtmlCode( );
93 }
94 }
95 }
96
97 return StringUtils.EMPTY;
98 }
99
100
101
102
103 @Override
104 public List<String> getCaptchaEngineNameList( )
105 {
106 List<ICaptchaEngine> listCaptchaEngine = SpringContextService.getBeansOfType( ICaptchaEngine.class );
107 if ( listCaptchaEngine != null && listCaptchaEngine.size( ) > 0 )
108 {
109 List<String> listCaptchaEngineNames = new ArrayList<String>( listCaptchaEngine.size( ) );
110 for ( ICaptchaEngine captchaImpl : listCaptchaEngine )
111 {
112 listCaptchaEngineNames.add( captchaImpl.getCaptchaEngineName( ) );
113 }
114 return listCaptchaEngineNames;
115 }
116 return new ArrayList<String>( );
117 }
118
119
120
121
122 @Override
123 public String getDefaultCaptchaEngineName( )
124 {
125 String strDefaultCaptcha = DatastoreService.getDataValue( DATASTORE_KEY_DEFAULT_CAPTCHA_ENGINE, StringUtils.EMPTY );
126 if ( StringUtils.isBlank( strDefaultCaptcha ) )
127 {
128
129 List<ICaptchaEngine> listCaptchaEngine = SpringContextService.getBeansOfType( ICaptchaEngine.class );
130 if ( listCaptchaEngine != null && listCaptchaEngine.size( ) > 0 )
131 {
132 for ( ICaptchaEngine captchaEngine : listCaptchaEngine )
133 {
134 if ( StringUtils.isNotBlank( captchaEngine.getCaptchaEngineName( ) ) )
135 {
136 strDefaultCaptcha = captchaEngine.getCaptchaEngineName( );
137
138 setDefaultCaptchaEngineName( strDefaultCaptcha );
139 break;
140 }
141 }
142 }
143 }
144 return strDefaultCaptcha;
145 }
146
147
148
149
150 @Override
151 public void setDefaultCaptchaEngineName( String strDefaultCaptchaEngine )
152 {
153 DatastoreService.setDataValue( DATASTORE_KEY_DEFAULT_CAPTCHA_ENGINE, strDefaultCaptchaEngine );
154 }
155
156 }