1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19 package org.apache.myfaces.custom.passwordStrength;
20
21 import javax.faces.component.html.HtmlInputText;
22
23 import org.apache.myfaces.component.AlignProperty;
24
25 /**
26 * The passwordStrength component is needed by the web sites
27 * which ask the user to enter a powerful password for the
28 * purpose of the registration stuff.
29 * <p>
30 * The component enables its user to know the strength of the password
31 * while (he/she) types it before even submit the form to the server
32 * [please see the screenshots].
33 * </p>
34 * <p>
35 * The component enables its user to define his custom security policy
36 * for his password in an easy manner.
37 * </p>
38 * <p>
39 * The component also have 2 types of presenting the password strength.
40 * Till now the strength can be represented as text or progressbar.
41 * </p>
42 *
43 * @JSFComponent
44 * name = "s:passwordStrength"
45 * class = "org.apache.myfaces.custom.passwordStrength.PasswordStrengthComponent"
46 * tagClass = "org.apache.myfaces.custom.passwordStrength.PasswordStrengthTag"
47 *
48 */
49 public abstract class AbstractPasswordStrengthComponent extends HtmlInputText
50 implements AlignProperty{
51
52 public static String COMPONENT_TYPE = "org.apache.myfaces.PasswordStrength";
53
54 public static String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.PasswordStrength";
55
56 public static String COMPONENT_FAMILY = "org.apache.myfaces.PasswordStrength";
57
58 /**
59 * This flag {true | false} determines whether to show the details (left characters).
60 * default is true
61 *
62 * @JSFProperty
63 */
64 public abstract String getShowDetails();
65
66 /**
67 * This flag determines the indicator type. It can be {text or bar}. Default is text
68 *
69 * @JSFProperty
70 */
71 public abstract String getStrengthIndicatorType();
72
73 /**
74 * The prefered length of the password
75 *
76 * @JSFProperty
77 */
78 public abstract String getPreferredPasswordLength();
79
80 /**
81 * The prefix of the component message
82 *
83 * @JSFProperty
84 */
85 public abstract String getPrefixText();
86
87 /**
88 * The text strength descriptions
89 *
90 * @JSFProperty
91 */
92 public abstract String getTextStrengthDescriptions();
93
94 /**
95 * This string determines the expression of the custom security rule of the password
96 * <p>
97 * Note that the expression has the following format :
98 * </p>
99 * <p>
100 * *******************************************************
101 * </p>
102 * <p>
103 * S (Number) N (Number) A (Number)
104 * </p>
105 * <ul>
106 * <li>Where S stands for Symbols</li>
107 * <li>Where N stands for Numbers</li>
108 * <li>Where A stands for Alphabets</li>
109 * </ul>
110 * <p>
111 * *******************************************************
112 * </p>
113 * <p>
114 * For example) A4N2S3A2
115 * Means that the password will be as following :
116 * </p>
117 * <ul>
118 * <li>4 or more Alphabets followed by</li>
119 * <li>2 or more Numbers followed by</li>
120 * <li>3 or more Symbols followed by</li>
121 * <li>2 or more Alphabets</li>
122 * </ul>
123 * <p>
124 * *******************************************************
125 * </p>
126 * <p>
127 * Note also that the useCustomSecurity should be set to true.
128 * </p>
129 *
130 * @JSFProperty
131 */
132 public abstract String getCustomSecurityExpression();
133
134 /**
135 * This flag determines whether to user custom security rules instead
136 * of just depending on the password length. The default is false.
137 *
138 * @JSFProperty
139 */
140 public abstract String getUseCustomSecurity();
141
142 /**
143 * This attribute determines the penalty ratio that will decrease the password
144 * Strength if the custom security expression is not met. Note also that the
145 * useCustomSecurity should be set to true to apply this flag. Possible values
146 * from 0 to 100. Default value is 50.
147 *
148 * @JSFProperty
149 */
150 public abstract String getPenaltyRatio();
151
152 /**
153 * HTML: Specifies the horizontal alignment of this element. Deprecated in HTML 4.01.
154 *
155 * @JSFProperty
156 */
157 public abstract String getAlign();
158
159 }