import org.cacert.gigi.dbObjects.User;
import org.cacert.gigi.localisation.Language;
import org.cacert.gigi.output.template.Form;
+import org.cacert.gigi.output.template.TranslateCommand;
+import org.cacert.gigi.pages.main.RegisterPage;
import org.cacert.gigi.util.AuthorizationContext;
import org.cacert.gigi.util.PasswordHash;
+import org.cacert.gigi.util.RateLimit;
import org.cacert.gigi.util.ServerConstants;
public class LoginPage extends Page {
+ public static final RateLimit RATE_LIMIT = new RateLimit(10, 5 * 60 * 1000);
+
public class LoginForm extends Form {
public LoginForm(HttpServletRequest hsr) {
@Override
public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException {
+ if (RegisterPage.RATE_LIMIT.isLimitExceeded(req.getRemoteAddr())) {
+ outputError(out, req, "Rate Limit Exceeded");
+ return false;
+ }
tryAuthWithUnpw(req);
return false;
}
public static final String LOGIN_RETURNPATH = "login-returnpath";
- public LoginPage(String title) {
- super(title);
+ public LoginPage() {
+ super("Password Login");
}
@Override
}
}
loginSession(req, User.getById(rs.getInt(2)));
- req.getSession().setAttribute(LOGIN_METHOD, "Password");
+ req.getSession().setAttribute(LOGIN_METHOD, new TranslateCommand("Password"));
}
}
}
loginSession(req, user);
req.getSession().setAttribute(CERT_SERIAL, serial);
req.getSession().setAttribute(CERT_ISSUER, x509Certificate.getIssuerDN());
- req.getSession().setAttribute(LOGIN_METHOD, "Certificate");
+ req.getSession().setAttribute(LOGIN_METHOD, new TranslateCommand("Certificate"));
}
public static String extractSerialFormCert(X509Certificate x509Certificate) {