Skip to content

Commit

Permalink
changing captcha generation - using numbers
Browse files Browse the repository at this point in the history
refreshing captcha after validation failure.
  • Loading branch information
katkav committed Nov 9, 2016
1 parent 3209fd6 commit ad52e8e
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 21 deletions.
@@ -1,5 +1,7 @@
package com.evolveum.midpoint.gui.api.component.captcha;

import java.util.Random;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.extensions.markup.html.captcha.CaptchaImageResource;
Expand Down Expand Up @@ -66,12 +68,12 @@ protected final void onComponentTag(final ComponentTag tag) {
}

protected CaptchaImageResource createCaptchImageResource() {
return new CaptchaImageResource() {
return new CaptchaImageResource(randomString(), 48, 30) {
private static final long serialVersionUID = 1L;

@Override
protected byte[] render() {
String randomText = randomString(6, 8);
String randomText = randomString();
getChallengeIdModel().setObject(randomText);
return super.render();
}
Expand All @@ -85,16 +87,21 @@ public void invalidateCaptcha() {

static int randomInt(int min, int max)
{
return (int)(Math.random() * (max - min) + min);
return (int)(Math.random() * (max - min) + min);
}

static String randomString(int min, int max)
static String randomString()
{
int num = randomInt(min, max);
byte b[] = new byte[num];
for (int i = 0; i < num; i++)
b[i] = (byte)randomInt('a', 'z');
return new String(b);
return new Integer(randomInt(1000, 9999)).toString();
// for (int i = 0; i< length; i++){
//
// }
//
// int num = randomInt(min, max);
// byte b[] = new byte[num];
// for (int i = 0; i < num; i++)
// b[i] = (byte)randomInt('a', 'z');
// return new String(b);
}

public String getCaptchaText() {
Expand Down
Expand Up @@ -4,6 +4,7 @@
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.feedback.ContainerFeedbackMessageFilter;
import org.apache.wicket.markup.html.basic.MultiLineLabel;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.image.Image;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.IModel;
Expand Down Expand Up @@ -356,12 +357,15 @@ public OperationResult run() {
getSession().error(
createStringResource("PageSelfRegistration.registration.error", result.getMessage())
.getString());
removePassword();
removePassword(target);
updateCaptcha(target);
target.add(getFeedbackPanel());
LOGGER.error("Failed to register user {}. Reason {}", userModel.getObject(), result.getMessage());
return;

}

updateCaptcha(target);

target.add(getFeedbackPanel());
target.add(this);

Expand All @@ -376,9 +380,9 @@ private boolean validateCaptcha(AjaxRequestTarget target) {
LOGGER.error(message);
getSession().error(message);
target.add(getFeedbackPanel());
removePassword();
removePassword(target);
updateCaptcha(target);
target.add(this);
// target.add(this);
return false;
}

Expand All @@ -388,10 +392,10 @@ private boolean validateCaptcha(AjaxRequestTarget target) {
.getString();
LOGGER.error(message);
getSession().error(message);
removePassword();
removePassword(target);
updateCaptcha(target);
target.add(getFeedbackPanel());
target.add(this);
// target.add(this);
return false;
}
}
Expand All @@ -401,10 +405,14 @@ private boolean validateCaptcha(AjaxRequestTarget target) {

private void updateCaptcha(AjaxRequestTarget target) {

CaptchaPanel captcha = (CaptchaPanel) get(createComponentPath(ID_MAIN_FORM, ID_CAPTCHA));
captcha.invalidateCaptcha();
Image image = (Image) get(createComponentPath(ID_MAIN_FORM, ID_CAPTCHA, "image"));
target.add(image);
CaptchaPanel captcha = new CaptchaPanel(ID_CAPTCHA);
captcha.setOutputMarkupId(true);

Form form = (Form) get(ID_MAIN_FORM);
form.addOrReplace(captcha);
// captcha.invalidateCaptcha();
// Image image = (Image) get(createComponentPath(ID_MAIN_FORM, ID_CAPTCHA, "image"));
target.add(form);
}

private void saveUser(Task task, OperationResult result) {
Expand Down Expand Up @@ -531,9 +539,12 @@ private String getPassword() {
return (String) password.getBaseFormComponent().getModel().getObject();
}

private void removePassword() {
private void removePassword(AjaxRequestTarget target) {
PasswordPanel password = (PasswordPanel) get(createComponentPath(ID_MAIN_FORM, ID_PASSWORD));
password.getBaseFormComponent().getModel().setObject(null);
for (FormComponent comp : password.getFormComponents()) {
comp.getModel().setObject(null);
}
target.add(password);
}

@Override
Expand Down

0 comments on commit ad52e8e

Please sign in to comment.