4847 |
13 Jun 18 |
nicklas |
1 |
package net.sf.basedb.otp; |
4847 |
13 Jun 18 |
nicklas |
2 |
|
4847 |
13 Jun 18 |
nicklas |
3 |
import net.sf.basedb.clients.web.extensions.AbstractJspActionFactory; |
4847 |
13 Jun 18 |
nicklas |
4 |
import net.sf.basedb.clients.web.extensions.login.FieldInfo; |
4847 |
13 Jun 18 |
nicklas |
5 |
import net.sf.basedb.clients.web.extensions.login.LoginFormAction; |
4847 |
13 Jun 18 |
nicklas |
6 |
import net.sf.basedb.clients.web.extensions.login.LoginFormBean; |
4918 |
08 Aug 18 |
nicklas |
7 |
import net.sf.basedb.core.authentication.AuthenticationMethod; |
4847 |
13 Jun 18 |
nicklas |
8 |
import net.sf.basedb.util.extensions.InvokationContext; |
4847 |
13 Jun 18 |
nicklas |
9 |
|
4847 |
13 Jun 18 |
nicklas |
10 |
/** |
4847 |
13 Jun 18 |
nicklas |
Action factory for the OTP authentication login form. |
4847 |
13 Jun 18 |
nicklas |
12 |
|
4847 |
13 Jun 18 |
nicklas |
@author nicklas |
4847 |
13 Jun 18 |
nicklas |
@since 1.0 |
4847 |
13 Jun 18 |
nicklas |
15 |
*/ |
4847 |
13 Jun 18 |
nicklas |
16 |
public class OtpLoginFormFactory |
4847 |
13 Jun 18 |
nicklas |
17 |
extends AbstractJspActionFactory<LoginFormAction> |
4847 |
13 Jun 18 |
nicklas |
18 |
{ |
4847 |
13 Jun 18 |
nicklas |
19 |
|
5183 |
06 Dec 18 |
nicklas |
20 |
public OtpLoginFormFactory() |
5183 |
06 Dec 18 |
nicklas |
21 |
{} |
4848 |
13 Jun 18 |
nicklas |
22 |
|
5183 |
06 Dec 18 |
nicklas |
23 |
@Override |
5183 |
06 Dec 18 |
nicklas |
24 |
public boolean prepareContext(InvokationContext<? super LoginFormAction> context) |
4847 |
13 Jun 18 |
nicklas |
25 |
{ |
5183 |
06 Dec 18 |
nicklas |
26 |
String clientId = context.getClientContext().getSessionControl().getExternalClientId(); |
5183 |
06 Dec 18 |
nicklas |
27 |
boolean ok = Otp.getConfig(true) != null && !Otp.isOtpDisabledForClient(clientId); |
5183 |
06 Dec 18 |
nicklas |
28 |
return ok && super.prepareContext(context); |
5183 |
06 Dec 18 |
nicklas |
29 |
} |
4918 |
08 Aug 18 |
nicklas |
30 |
|
5183 |
06 Dec 18 |
nicklas |
31 |
/** |
5183 |
06 Dec 18 |
nicklas |
@return A single {@link LoginFormBean} instance |
5183 |
06 Dec 18 |
nicklas |
33 |
*/ |
5183 |
06 Dec 18 |
nicklas |
34 |
@Override |
5183 |
06 Dec 18 |
nicklas |
35 |
public LoginFormAction[] getActions(InvokationContext<? super LoginFormAction> context) |
5183 |
06 Dec 18 |
nicklas |
36 |
{ |
5183 |
06 Dec 18 |
nicklas |
37 |
AuthenticationMethod authMethod = Otp.getAuthenticationMethod(); |
5183 |
06 Dec 18 |
nicklas |
38 |
|
5151 |
28 Nov 18 |
nicklas |
39 |
FieldInfo otpField = new FieldInfo("One-time passcode", false); |
5151 |
28 Nov 18 |
nicklas |
40 |
otpField.setClazz("requried"); |
5151 |
28 Nov 18 |
nicklas |
41 |
otpField.setStyle("width: 10em;"); |
5151 |
28 Nov 18 |
nicklas |
42 |
otpField.setTooltip("Use your device to generate a 6-digit code"); |
4918 |
08 Aug 18 |
nicklas |
43 |
|
4918 |
08 Aug 18 |
nicklas |
44 |
String helpTextWithConfigLink = "<p style=\"margin-top: 0.5em;\">" |
4918 |
08 Aug 18 |
nicklas |
45 |
+ "<b>Note!</b> If you have not configured your account for OTP you can do it " |
4918 |
08 Aug 18 |
nicklas |
46 |
+ "<span class=\"link auto-init\" data-auto-init=\"setup-otp\">here</span>."; |
4918 |
08 Aug 18 |
nicklas |
47 |
|
5183 |
06 Dec 18 |
nicklas |
48 |
LoginFormBean loginForm = new LoginFormBean(); |
5151 |
28 Nov 18 |
nicklas |
49 |
loginForm.setDisplayName("OTP"); |
5151 |
28 Nov 18 |
nicklas |
50 |
loginForm.setRememberLastLogin(true); |
5151 |
28 Nov 18 |
nicklas |
51 |
loginForm.setLoginField(FieldInfo.DEFAULT_LOGIN); |
4918 |
08 Aug 18 |
nicklas |
52 |
if (authMethod == Otp.OTP_ONLY_AUTHENTICATION_METHOD) |
4918 |
08 Aug 18 |
nicklas |
53 |
{ |
5151 |
28 Nov 18 |
nicklas |
54 |
loginForm.setHelp( |
4848 |
13 Jun 18 |
nicklas |
55 |
"A one-time passcode (OTP) is required to login. Enter your username in the <b>Login</b> field. " |
4848 |
13 Jun 18 |
nicklas |
56 |
+ "Use your device to generate a 6-digit code and enter it in the <b>One-time passcode</b> field. " |
4918 |
08 Aug 18 |
nicklas |
57 |
+ helpTextWithConfigLink); |
5151 |
28 Nov 18 |
nicklas |
58 |
loginForm.setPasswordField(otpField); |
4918 |
08 Aug 18 |
nicklas |
59 |
} |
4918 |
08 Aug 18 |
nicklas |
60 |
else |
4918 |
08 Aug 18 |
nicklas |
61 |
{ |
5151 |
28 Nov 18 |
nicklas |
62 |
loginForm.setHelp( |
4918 |
08 Aug 18 |
nicklas |
63 |
"A one-time passcode (OTP) is required to login. Enter your username in the <b>Login</b> field and your " |
4918 |
08 Aug 18 |
nicklas |
64 |
+ "regular password in the <b>Password</b> field. " |
4918 |
08 Aug 18 |
nicklas |
65 |
+ "Use your device to generate a 6-digit code and enter it in the <b>One-time passcode</b> field. " |
4918 |
08 Aug 18 |
nicklas |
66 |
+ helpTextWithConfigLink); |
5151 |
28 Nov 18 |
nicklas |
67 |
loginForm.setPasswordField(FieldInfo.DEFAULT_PASSWORD); |
5151 |
28 Nov 18 |
nicklas |
68 |
loginForm.setExtraField(otpField); |
4918 |
08 Aug 18 |
nicklas |
69 |
} |
5183 |
06 Dec 18 |
nicklas |
70 |
|
5151 |
28 Nov 18 |
nicklas |
71 |
return new LoginFormAction[] { loginForm }; |
4847 |
13 Jun 18 |
nicklas |
72 |
} |
4847 |
13 Jun 18 |
nicklas |
73 |
|
4847 |
13 Jun 18 |
nicklas |
74 |
|
4847 |
13 Jun 18 |
nicklas |
75 |
} |