Commit 48d69228 authored by Dominik Hebeler's avatar Dominik Hebeler

Added weekday to captcha

parent 94206c10
......@@ -8,6 +8,7 @@ use Illuminate\Hashing\BcryptHasher as Hasher;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redis;
use Input;
use LaravelLocalization;
class HumanVerification extends Controller
{
......@@ -26,6 +27,40 @@ class HumanVerification extends Controller
}
if ($request->getMethod() == 'POST') {
# Check if Weekday matches
$weekdays = [
'de' => [
'montag',
'dienstag',
'mittwoch',
'donnerstag',
'freitag',
'samstag',
'sonntag',
],
'en' => [
'monday',
'tuesday',
'wednesday',
'thursday',
'friday',
'saturday',
'sunday',
],
'es' => [
'lunes',
'martes',
'miércoles',
'jueves',
'viernes',
'sábado',
'domingo',
],
];
$lang = LaravelLocalization::getCurrentLocale();
$dow = Carbon::now()->dayOfWeek;
$dowCheck = strtolower(trim($request->input('dw', ''))) === $weekdays[$lang][$dow - 1];
$user = $redis->hgetall(HumanVerification::PREFIX . "." . $id);
$user = ['uid' => $user["uid"],
......@@ -40,7 +75,7 @@ class HumanVerification extends Controller
$key = $request->input('captcha');
$key = strtolower($key);
if (!$hasher->check($key, $lockedKey)) {
if (!$dowCheck || !$hasher->check($key, $lockedKey)) {
$captcha = Captcha::create("default", true);
$pipeline = $redis->pipeline();
$pipeline->hset(HumanVerification::PREFIX . "." . $id, 'lockedKey', $captcha["key"]);
......@@ -50,7 +85,7 @@ class HumanVerification extends Controller
->with('id', $id)
->with('url', $url)
->with('image', $captcha["img"])
->with('errorMessage', 'Fehler: Falsches Captcha eingegeben!');
->with('errorMessage', 'Fehler: Falsche Eingabe!');
} else {
# If we can unlock the Account of this user we will redirect him to the result page
if ($user !== null && $user["locked"]) {
......
<?php
return [
'1' => 'Entschuldigen Sie die Störung',
'2' => 'Sie befinden sich in einem Netzwerk aus dem wir verstärkt automatisierte Anfragen erhalten. Keine Sorge: Das bedeutet nicht unbedingt, dass diese Anfragen von Ihrem PC kommen.',
'3' => 'Allerdings können wir Ihre Anfragen nicht von denen des "Robots" unterscheiden. Zum Schutz der von uns abgefragten Suchmaschinen müssen wir aber sicherstellen, dass diese nicht mit (automatisierten) Abfragen überflutet werden.',
'4' => 'Bitte geben Sie deshalb die Zeichen aus dem Bild in die erste Eingabebox und den heutigen Wochentag in die zweite Eingabebox ein und bestätigen Sie mit "OK" um zur Ergebnisseite zu gelangen.',
'5' => 'Captcha eingeben',
'6' => 'Wochentag eingeben',
'7' => 'Sollten Sie diese Nachricht häufiger sehen oder handelt es sich dabei um einen Irrtum, schicken Sie uns gerne eine Nachricht über unser <a href=":url">Kontaktformular</a>.',
'8' => 'Nennen Sie uns in diesem Fall bitte unbedingt folgende Vorgangsnummer:',
];
<?php
return [
'1' => 'Sorry to bother you',
'2' => 'You are in a network from which we increasingly receive automated requests. Do not worry: this does not necessarily mean that these requests come from your PC.',
'3' => 'However, we can not distinguish your requests from those of the "robot". To protect the search engines we query, we must ensure that they are not flooded with (automated) queries.',
'4' => 'Therefore, please enter the characters from the picture in the first input box and today\'s day of the week in the second input box and confirm with "OK" to get to the result page.',
'5' => 'Enter captcha',
'6' => 'Enter weekday',
'7' => 'If you see this message more often, or if it is a mistake, feel free to send a message via our <a href=":url"> contact form </a>.',
'8' => 'In this case, please give us the following transaction number:',
];
<?php
return [
'1' => 'Perdon por la molestia',
'2' => 'Estás en una red desde la que recibimos cada vez más consultas automáticas. No se preocupe: esto no significa necesariamente que estas solicitudes provengan de su PC.',
'3' => 'Sin embargo, no podemos distinguir sus peticiones de las del "robot". Para proteger los motores de búsqueda que consultamos, debemos asegurarnos de que no estén inundados de consultas (automatizadas).',
'4' => 'Por lo tanto, ingrese los caracteres de la imagen en el primer cuadro de entrada y el día de la semana de hoy en el segundo cuadro de entrada y confirme con "OK" para acceder a la página de resultados.',
'5' => 'Entrar en captcha',
'6' => 'Entrar en día laborable',
'7' => 'Si ve este mensaje con más frecuencia o si es un error, puede enviar un mensaje a través de nuestro <a href=":url"> formulario de contacto </a>.',
'8' => 'En este caso, por favor dénos el siguiente número de transacción:',
];
......@@ -3,21 +3,21 @@
@section('title', $title )
@section('content')
<h1>Entschuldigen Sie die Störung</h1>
<p>Sie befinden sich in einem Netzwerk aus dem wir verstärkt automatisierte Anfragen erhalten. Keine Sorge: Das bedeutet nicht unbedingt, dass diese Anfragen von Ihrem PC kommen.</p>
<p>Allerdings können wir Ihre Anfragen nicht von denen des "Robots" unterscheiden. Zum Schutz der von uns abgefragten Suchmaschinen müssen wir aber sicherstellen, dass diese nicht mit (automatisierten) Abfragen überflutet werden.</p>
<p>Bitte geben Sie deshalb die Zeichen aus dem Bild in die Eingabebox ein und bestätigen Sie mit "OK" um zur Ergebnisseite zu gelangen.</p>
<form method="post" action="{{ route('verification', ['id' => $id]) }}">
<h1>@lang('captcha.1')</h1>
<p>@lang('captcha.2')</p>
<p>@lang('captcha.3')</p>
<p>@lang('captcha.4')</p>
<form method="post" action="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), route('verification', ['id' => $id])) }}">
<input type="hidden" name="url" value="{!! $url !!}">
<input type="hidden" name="id" value="{{ $id }}">
<p><img src="{{ $image }}" /></p>
@if(isset($errorMessage))
<p><font color="red">{{$errorMessage}}</font></p>
@endif
<p><input type="text" class="form-control" name="captcha" placeholder="Captcha eingeben" autofocus></p>
<p><input type="text" class="form-control" name="captcha" placeholder="@lang('captcha.5')" autofocus></p>
<p><input type="text" class="form-control" name="dw" placeholder="@lang('captcha.6')"></p>
<p><button type="submit" class="btn btn-success" name="check">OK</button></p>
</form>
<p>Sollten Sie diese Nachricht häufiger sehen oder handelt es sich dabei um einen Irrtum, schicken Sie uns gerne eine Nachricht über unser <a href="/kontakt">Kontaktformular</a>.</p>
<p>Nennen Sie uns in diesem Fall bitte unbedingt folgende Vorgangsnummer: {{ $id }}
<p>@lang('captcha.7', ['url' => LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), 'kontakt')])</p>
<p>@lang('captcha.8') {{ $id }}
@endsection
<?php
# In this File we collect all routes which require a session or other cookies to be active
Route::match(['get', 'post'], 'meta/verification/{id}/{url?}', 'HumanVerification@captcha')->name('verification');
Route::group(
[
'prefix' => LaravelLocalization::setLocale(), /*,
'middleware' => [ 'localeSessionRedirect', 'localizationRedirect' ]*/
],
function () {
Route::match(['get', 'post'], 'meta/verification/{id}/{url?}', 'HumanVerification@captcha')->name('verification');
}
);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment