Captcha in progress (#595)

This commit is contained in:
Xavier Guimard 2017-01-25 11:11:48 +00:00
parent 82acb3024d
commit 5fb44d05a2
11 changed files with 66 additions and 44 deletions

View File

@ -35,7 +35,7 @@ has ott => (
}
);
# Returns secret + a HTML <img> tag with embedded image
# Returns secret + a HTML image src content
sub getCaptcha {
my ($self) = @_;
my $image = GD::SecurityImage->new(
@ -49,8 +49,7 @@ sub getCaptcha {
$image->random;
$image->create( 'normal', 'default', $self->fgColor, $self->bgColor );
my ( $imageData, $mimeType, $rdm ) = $image->out( force => 'png' );
my $img = '<img src="data:image/png;base64,'
. encode_base64( $imageData, '' ) . '">';
my $img = 'data:image/png;base64,' . encode_base64( $imageData, '' );
my $token = $self->ott->createToken( { captcha => $rdm } );
return ( $token, $img );
}
@ -63,7 +62,8 @@ sub validateCaptcha {
return 0;
}
unless ( $s->{captcha} == $value ) {
$self->lmLog( 'Bad captcha response', 'notice' ) return 0;
$self->lmLog( 'Bad captcha response', 'notice' );
return 0;
}
$self->lmLog( 'Good captcha response', 'debug' );
return 1;

View File

@ -182,12 +182,16 @@ sub display {
);
# Display captcha if it's enabled
if ( $self->{captcha_login_enabled} ) {
if ( $req->captcha ) {
%templateParams = (
%templateParams,
CAPTCHA_IMG => $req->{captcha_img},
CAPTCHA_CODE => $req->{captcha_code},
CAPTCHA_SIZE => $req->{captcha_size}
CAPTCHA_SRC => $req->captcha,
);
}
if ( $req->token ) {
%templateParams = (
%templateParams,
TOKEN => $req->token,
);
}

View File

@ -25,15 +25,17 @@
<input name="mail" type="text" value="<TMPL_VAR NAME="MAIL">" class="form-control" trplaceholder="mail" required />
</div>
<TMPL_IF NAME=CAPTCHA_IMG>
<TMPL_IF NAME=CAPTCHA_SRC>
<div class="form-group">
<img src="<TMPL_VAR NAME=CAPTCHA_IMG>" class="img-thumbnail" />
<img src="<TMPL_VAR NAME=CAPTCHA_SRC>" class="img-thumbnail" />
</div>
<div class="form-group input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-eye-open"></i> </span>
<input type="text" name="captcha_user_code" size="<TMPL_VAR NAME=CAPTCHA_SIZE>" class="form-control" placeholder="Captcha" required />
<input type="text" name="captcha" size="<TMPL_VAR NAME=CAPTCHA_SIZE>" class="form-control" placeholder="Captcha" required />
</div>
<input type="hidden" name="captcha_code" value="<TMPL_VAR NAME=CAPTCHA_CODE>" />
</TMPL_IF>
<TMPL_IF NAME="TOKEN">
<input type!"hidden" name="token" value="<TMPL_IF NAME="TOKEN">" />
</TMPL_IF>
<button type="submit" class="btn btn-success" >

View File

@ -33,15 +33,17 @@
<input name="mail" type="text" value="<TMPL_VAR NAME="MAIL">" class="form-control" trplaceholder="mail" required />
</div>
<TMPL_IF NAME=CAPTCHA_IMG>
<TMPL_IF NAME=CAPTCHA_SRC>
<div class="form-group">
<img src="<TMPL_VAR NAME=CAPTCHA_IMG>" class="img-thumbnail" />
<img src="<TMPL_VAR NAME=CAPTCHA_SRC>" class="img-thumbnail" />
</div>
<div class="form-group input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-eye-open"></i> </span>
<input type="text" name="captcha_user_code" size="<TMPL_VAR NAME=CAPTCHA_SIZE>" class="form-control" placeholder="Captcha" required />
<input type="text" name="captcha" size="<TMPL_VAR NAME=CAPTCHA_SIZE>" class="form-control" placeholder="Captcha" required />
</div>
<input type="hidden" name="captcha_code" value="<TMPL_VAR NAME=CAPTCHA_CODE>" />
</TMPL_IF>
<TMPL_IF NAME="TOKEN">
<input type!"hidden" name="token" value="<TMPL_IF NAME="TOKEN">" />
</TMPL_IF>
<button type="submit" class="btn btn-success" >

View File

@ -9,15 +9,17 @@
<input name="password" type="password" class="form-control" trplaceholder="password" required />
</div>
<TMPL_IF NAME=CAPTCHA_IMG>
<TMPL_IF NAME=CAPTCHA_SRC>
<div class="form-group">
<img src="<TMPL_VAR NAME=CAPTCHA_IMG>" class="img-thumbnail" />
<img src="<TMPL_VAR NAME=CAPTCHA_SRC>" class="img-thumbnail" />
</div>
<div class="form-group input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-eye-open"></i> </span>
<input type="text" name="captcha_user_code" size="<TMPL_VAR NAME=CAPTCHA_SIZE>" class="form-control" placeholder="Captcha" required />
<input type="text" name="captcha" size="<TMPL_VAR NAME=CAPTCHA_SIZE>" class="form-control" placeholder="Captcha" required />
</div>
<input type="hidden" name="captcha_code" value="<TMPL_VAR NAME=CAPTCHA_CODE>" />
</TMPL_IF>
<TMPL_IF NAME="TOKEN">
<input type!"hidden" name="token" value="<TMPL_IF NAME="TOKEN">" />
</TMPL_IF>
<TMPL_INCLUDE NAME="checklogins.tpl">

View File

@ -23,15 +23,17 @@
<th><span trspan="mail">Mail</span></th>
<td><input name="mail" type="text" value="<TMPL_VAR NAME="MAIL">" /></td>
</tr>
<TMPL_IF NAME=CAPTCHA_IMG>
<TMPL_IF NAME=CAPTCHA_SRC>
<tr><td></td><td>
<img src="<TMPL_VAR NAME=CAPTCHA_IMG>" />
<img src="<TMPL_VAR NAME=CAPTCHA_SRC>" />
</td></tr>
<tr><th><span trspan="captcha">Captcha</span></th>
<td><input type="text" name="captcha_user_code" size="<TMPL_VAR NAME=CAPTCHA_SIZE>" />
<input type="hidden" name="captcha_code" value="<TMPL_VAR NAME=CAPTCHA_CODE>" /></td>
<td><input type="text" name="captcha" size="<TMPL_VAR NAME=CAPTCHA_SIZE>" /></td>
</tr>
</TMPL_IF>
<TMPL_IF NAME="TOKEN">
<input type!"hidden" name="token" value="<TMPL_IF NAME="TOKEN">" />
</TMPL_IF>
<tr>
<td colspan="2">
<div class="buttons">

View File

@ -31,15 +31,17 @@
<th><span trspan="mail">Mail</span></th>
<td><input name="mail" type="text" value="<TMPL_VAR NAME="MAIL">" /></td>
</tr>
<TMPL_IF NAME=CAPTCHA_IMG>
<TMPL_IF NAME=CAPTCHA_SRC>
<tr><td></td><td>
<img src="<TMPL_VAR NAME=CAPTCHA_IMG>" />
<img src="<TMPL_VAR NAME=CAPTCHA_SRC>" />
</td></tr>
<tr><th><span trspan="captcha">Captcha</span></th>
<td><input type="text" name="captcha_user_code" size="<TMPL_VAR NAME=CAPTCHA_SIZE>" />
<input type="hidden" name="captcha_code" value="<TMPL_VAR NAME=CAPTCHA_CODE>" /></td>
<td><input type="text" name="captcha" size="<TMPL_VAR NAME=CAPTCHA_SIZE>" /></td>
</tr>
</TMPL_IF>
<TMPL_IF NAME="TOKEN">
<input type!"hidden" name="token" value="<TMPL_IF NAME="TOKEN">" />
</TMPL_IF>
<tr>
<td colspan="2">
<div class="buttons">

View File

@ -7,16 +7,18 @@
<input name="password" type="password" tabindex="2" /><br/>
</p>
<TMPL_IF NAME=CAPTCHA_IMG>
<TMPL_IF NAME=CAPTCHA_SRC>
<p>
<img src="<TMPL_VAR NAME=CAPTCHA_IMG>" />
<img src="<TMPL_VAR NAME=CAPTCHA_SRC>" />
</p>
<p>
<span class="text-label"><span trspan="captcha">Captcha</span></span><br />
<input type="text" name="captcha_user_code" size="<TMPL_VAR NAME=CAPTCHA_SIZE>" tabindex="3" /><br />
<input type="hidden" name="captcha_code" value="<TMPL_VAR NAME=CAPTCHA_CODE>" />
<input type="text" name="captcha" size="<TMPL_VAR NAME=CAPTCHA_SIZE>" tabindex="3" /><br />
</p>
</TMPL_IF>
<TMPL_IF NAME="TOKEN">
<input type!"hidden" name="token" value="<TMPL_IF NAME="TOKEN">" />
</TMPL_IF>
<TMPL_IF NAME="CHECK_LOGINS">
<p>

View File

@ -25,15 +25,17 @@
<td><input name="mail" type="text" value="<TMPL_VAR NAME="MAIL">"/></td>
</tr>
<TMPL_IF NAME=CAPTCHA_IMG>
<TMPL_IF NAME=CAPTCHA_SRC>
<tr><td></td><td>
<img src="<TMPL_VAR NAME=CAPTCHA_IMG>" />
<img src="<TMPL_VAR NAME=CAPTCHA_SRC>" />
</td></tr>
<tr><th><span trspan="captcha">Captcha</span></th>
<td><input type="text" name="captcha_user_code" size="<TMPL_VAR NAME=CAPTCHA_SIZE>" />
<input type="hidden" name="captcha_code" value="<TMPL_VAR NAME=CAPTCHA_CODE>" /></td>
<td><input type="text" name="captcha" size="<TMPL_VAR NAME=CAPTCHA_SIZE>" /></td>
</tr>
</TMPL_IF>
<TMPL_IF NAME="TOKEN">
<input type!"hidden" name="token" value="<TMPL_IF NAME="TOKEN">" />
</TMPL_IF>
<tr><td colspan="2">
<div class="buttons">

View File

@ -35,15 +35,17 @@
<td><input name="mail" type="text" value="<TMPL_VAR NAME="MAIL">"/></td>
</tr>
<TMPL_IF NAME=CAPTCHA_IMG>
<TMPL_IF NAME=CAPTCHA_SRC>
<tr><td></td><td>
<img src="<TMPL_VAR NAME=CAPTCHA_IMG>" />
<img src="<TMPL_VAR NAME=CAPTCHA_SRC>" />
</td></tr>
<tr><th><span trspan="captcha">Captcha</span></th>
<td><input type="text" name="captcha_user_code" size="<TMPL_VAR NAME=CAPTCHA_SIZE>" />
<input type="hidden" name="captcha_code" value="<TMPL_VAR NAME=CAPTCHA_CODE>" /></td>
<td><input type="text" name="captcha" size="<TMPL_VAR NAME=CAPTCHA_SIZE>" /></td>
</tr>
</TMPL_IF>
<TMPL_IF NAME="TOKEN">
<input type!"hidden" name="token" value="<TMPL_IF NAME="TOKEN">" />
</TMPL_IF>
<tr><td colspan="2">
<div class="buttons">

View File

@ -8,15 +8,17 @@
<td><input name="password" type="password" tabindex="2" /></td>
</tr>
<TMPL_IF NAME=CAPTCHA_IMG>
<TMPL_IF NAME="CAPTCHA_SRC">
<tr><td></td><td>
<img src="<TMPL_VAR NAME=CAPTCHA_IMG>" />
<img src="<TMPL_VAR NAME="CAPTCHA_SRC">" />
</td></tr>
<tr><th><span trspan="captcha">Captcha</span></th>
<td><input type="text" name="captcha_user_code" size="<TMPL_VAR NAME=CAPTCHA_SIZE>" tabindex="3" />
<input type="hidden" name="captcha_code" value="<TMPL_VAR NAME=CAPTCHA_CODE>" /></td>
<td><input type="text" name="captcha" size="<TMPL_VAR NAME="CAPTCHA_SIZE">" tabindex="3" /></td>
</tr>
</TMPL_IF>
<TMPL_IF NAME="TOKEN">
<input type!"hidden" name="token" value="<TMPL_IF NAME="TOKEN">" />
</TMPL_IF>
<TMPL_IF NAME="CHECK_LOGINS">
<tr><td colspan="2"><div class="buttons">