FEATURE #1831: add recaptcha module

This commit is contained in:
Michal Kváček
2017-04-24 00:00:42 +02:00
parent e41c589225
commit 4a5c9ab1e6
7 changed files with 207 additions and 101 deletions
+2 -1
View File
@@ -15,7 +15,8 @@
"mcamara/laravel-localization": "^1.1",
"franzose/closure-table": "^4.1",
"intervention/image": "^2.3",
"webwizo/laravel-shortcodes": "1.0.4"
"webwizo/laravel-shortcodes": "1.0.4",
"greggilbert/recaptcha": "^2.2@dev"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
Generated
+132 -79
View File
@@ -4,8 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "1d486fb23e76c7af1daf00bee207919c",
"content-hash": "957b49e5a2e691ad8dbc0e665a87d6c7",
"content-hash": "b986e3e1805bf5cb028c24818beeb9a4",
"packages": [
{
"name": "classpreloader/classpreloader",
@@ -59,7 +58,7 @@
"class",
"preload"
],
"time": "2016-01-24 12:28:38"
"time": "2016-01-24T12:28:38+00:00"
},
{
"name": "dnoegel/php-xdg-base-dir",
@@ -92,7 +91,7 @@
"MIT"
],
"description": "implementation of xdg base directory specification for php",
"time": "2014-10-24 07:27:01"
"time": "2014-10-24T07:27:01+00:00"
},
{
"name": "doctrine/annotations",
@@ -160,7 +159,7 @@
"docblock",
"parser"
],
"time": "2016-08-31 09:31:57"
"time": "2016-08-31T09:31:57+00:00"
},
{
"name": "doctrine/cache",
@@ -229,7 +228,7 @@
"cache",
"caching"
],
"time": "2016-07-15 15:57:08"
"time": "2016-07-15T15:57:08+00:00"
},
{
"name": "doctrine/collections",
@@ -295,7 +294,7 @@
"collections",
"iterator"
],
"time": "2016-09-01 10:39:08"
"time": "2016-09-01T10:39:08+00:00"
},
{
"name": "doctrine/common",
@@ -368,7 +367,7 @@
"persistence",
"spl"
],
"time": "2016-07-20 15:39:51"
"time": "2016-07-20T15:39:51+00:00"
},
{
"name": "doctrine/dbal",
@@ -440,7 +439,7 @@
"persistence",
"queryobject"
],
"time": "2016-08-25 23:11:10"
"time": "2016-08-25T23:11:10+00:00"
},
{
"name": "doctrine/inflector",
@@ -507,7 +506,7 @@
"singularize",
"string"
],
"time": "2016-05-12 17:23:41"
"time": "2016-05-12T17:23:41+00:00"
},
{
"name": "doctrine/lexer",
@@ -561,7 +560,7 @@
"lexer",
"parser"
],
"time": "2014-09-09 13:34:57"
"time": "2014-09-09T13:34:57+00:00"
},
{
"name": "erusev/parsedown",
@@ -600,7 +599,7 @@
"markdown",
"parser"
],
"time": "2015-10-04 16:44:32"
"time": "2015-10-04T16:44:32+00:00"
},
{
"name": "erusev/parsedown-extra",
@@ -644,7 +643,7 @@
"parsedown",
"parser"
],
"time": "2015-11-01 10:19:22"
"time": "2015-11-01T10:19:22+00:00"
},
{
"name": "franzose/closure-table",
@@ -702,7 +701,59 @@
"laravel",
"pages"
],
"time": "2016-07-08 08:19:46"
"time": "2016-07-08T08:19:46+00:00"
},
{
"name": "greggilbert/recaptcha",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/greggilbert/recaptcha.git",
"reference": "298cbc072e8ba734df2b8af798f848dacd27a4c9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/greggilbert/recaptcha/zipball/298cbc072e8ba734df2b8af798f848dacd27a4c9",
"reference": "298cbc072e8ba734df2b8af798f848dacd27a4c9",
"shasum": ""
},
"require": {
"illuminate/support": "~5.1",
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.2-dev"
}
},
"autoload": {
"classmap": [
"src/migrations"
],
"psr-4": {
"Greggilbert\\Recaptcha\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Greg Gilbert",
"email": "greg@greg-gilbert.com"
}
],
"description": "reCAPTCHA Validator for Laravel 5",
"homepage": "http://github.com/greggilbert/recaptcha",
"keywords": [
"captcha",
"laravel",
"laravel5",
"recaptcha"
],
"time": "2017-04-06 17:10:49"
},
{
"name": "guzzlehttp/psr7",
@@ -872,7 +923,7 @@
"homepage": "http://www.acci.cz"
}
],
"time": "2014-04-08 15:00:19"
"time": "2014-04-08T15:00:19+00:00"
},
{
"name": "jakub-onderka/php-console-highlighter",
@@ -916,7 +967,7 @@
"homepage": "http://www.acci.cz/"
}
],
"time": "2015-04-20 18:58:01"
"time": "2015-04-20T18:58:01+00:00"
},
{
"name": "jeremeamia/SuperClosure",
@@ -974,7 +1025,7 @@
"serialize",
"tokenizer"
],
"time": "2016-02-29 04:36:50"
"time": "2016-02-29T04:36:50+00:00"
},
{
"name": "laravel/framework",
@@ -1104,7 +1155,7 @@
"framework",
"laravel"
],
"time": "2016-08-26 16:26:18"
"time": "2016-08-26T16:26:18+00:00"
},
{
"name": "laravelcollective/html",
@@ -1158,7 +1209,7 @@
],
"description": "HTML and Form Builders for the Laravel Framework",
"homepage": "http://laravelcollective.com",
"time": "2016-07-12 14:16:43"
"time": "2016-07-12T14:16:43+00:00"
},
{
"name": "league/flysystem",
@@ -1241,7 +1292,7 @@
"sftp",
"storage"
],
"time": "2016-08-26 20:18:09"
"time": "2016-08-26T20:18:09+00:00"
},
{
"name": "mcamara/laravel-localization",
@@ -1289,7 +1340,7 @@
"localization",
"php"
],
"time": "2016-08-25 18:28:07"
"time": "2016-08-25T18:28:07+00:00"
},
{
"name": "monolog/monolog",
@@ -1367,7 +1418,7 @@
"logging",
"psr-3"
],
"time": "2016-07-29 03:23:52"
"time": "2016-07-29T03:23:52+00:00"
},
{
"name": "mtdowling/cron-expression",
@@ -1411,7 +1462,7 @@
"cron",
"schedule"
],
"time": "2016-01-26 21:23:30"
"time": "2016-01-26T21:23:30+00:00"
},
{
"name": "nesbot/carbon",
@@ -1464,7 +1515,7 @@
"datetime",
"time"
],
"time": "2016-07-22 14:20:35"
"time": "2016-07-22T14:20:35+00:00"
},
{
"name": "nikic/php-parser",
@@ -1515,7 +1566,7 @@
"parser",
"php"
],
"time": "2016-08-30 20:37:51"
"time": "2016-08-30T20:37:51+00:00"
},
{
"name": "paragonie/random_compat",
@@ -1563,7 +1614,7 @@
"pseudorandom",
"random"
],
"time": "2016-04-03 05:47:09"
"time": "2016-04-03T05:47:09+00:00"
},
{
"name": "pingpong/generators",
@@ -1612,7 +1663,7 @@
"laravel",
"pingpong"
],
"time": "2016-02-26 04:53:40"
"time": "2016-02-26T04:53:40+00:00"
},
{
"name": "pingpong/menus",
@@ -1664,7 +1715,7 @@
"navigation",
"pingpong"
],
"time": "2016-08-23 05:51:55"
"time": "2016-08-23T05:51:55+00:00"
},
{
"name": "pingpong/modules",
@@ -1715,7 +1766,7 @@
"modules",
"pingpong"
],
"time": "2016-01-29 04:39:40"
"time": "2016-01-29T04:39:40+00:00"
},
{
"name": "pingpong/support",
@@ -1757,7 +1808,7 @@
}
],
"description": "Support Component of Pingpong Sky Package",
"time": "2016-01-07 08:23:04"
"time": "2016-01-07T08:23:04+00:00"
},
{
"name": "psr/http-message",
@@ -1854,7 +1905,7 @@
"psr",
"psr-3"
],
"time": "2016-01-06 21:40:42"
"time": "2016-01-06T21:40:42+00:00"
},
{
"name": "psy/psysh",
@@ -1926,7 +1977,7 @@
"interactive",
"shell"
],
"time": "2016-03-09 05:03:14"
"time": "2016-03-09T05:03:14+00:00"
},
{
"name": "swiftmailer/swiftmailer",
@@ -1979,7 +2030,7 @@
"mail",
"mailer"
],
"time": "2016-08-19 20:47:22"
"time": "2016-08-19T20:47:22+00:00"
},
{
"name": "symfony/console",
@@ -2039,7 +2090,7 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
"time": "2016-07-30 07:22:48"
"time": "2016-07-30T07:22:48+00:00"
},
{
"name": "symfony/debug",
@@ -2096,7 +2147,7 @@
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
"time": "2016-07-30 07:22:48"
"time": "2016-07-30T07:22:48+00:00"
},
{
"name": "symfony/event-dispatcher",
@@ -2156,7 +2207,7 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
"time": "2016-07-19 10:47:02"
"time": "2016-07-19T10:47:02+00:00"
},
{
"name": "symfony/finder",
@@ -2205,7 +2256,7 @@
],
"description": "Symfony Finder Component",
"homepage": "https://symfony.com",
"time": "2016-06-29 05:40:00"
"time": "2016-06-29T05:40:00+00:00"
},
{
"name": "symfony/http-foundation",
@@ -2258,7 +2309,7 @@
],
"description": "Symfony HttpFoundation Component",
"homepage": "https://symfony.com",
"time": "2016-07-17 13:54:30"
"time": "2016-07-17T13:54:30+00:00"
},
{
"name": "symfony/http-kernel",
@@ -2340,7 +2391,7 @@
],
"description": "Symfony HttpKernel Component",
"homepage": "https://symfony.com",
"time": "2016-07-30 09:29:03"
"time": "2016-07-30T09:29:03+00:00"
},
{
"name": "symfony/polyfill-mbstring",
@@ -2399,7 +2450,7 @@
"portable",
"shim"
],
"time": "2016-08-30 17:06:17"
"time": "2016-08-30T17:06:17+00:00"
},
{
"name": "symfony/polyfill-php56",
@@ -2455,7 +2506,7 @@
"portable",
"shim"
],
"time": "2016-08-17 08:39:54"
"time": "2016-08-17T08:39:54+00:00"
},
{
"name": "symfony/polyfill-util",
@@ -2507,7 +2558,7 @@
"polyfill",
"shim"
],
"time": "2016-05-18 14:26:46"
"time": "2016-05-18T14:26:46+00:00"
},
{
"name": "symfony/process",
@@ -2556,7 +2607,7 @@
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"time": "2016-07-28 11:13:34"
"time": "2016-07-28T11:13:34+00:00"
},
{
"name": "symfony/routing",
@@ -2631,7 +2682,7 @@
"uri",
"url"
],
"time": "2016-06-29 05:40:00"
"time": "2016-06-29T05:40:00+00:00"
},
{
"name": "symfony/translation",
@@ -2695,7 +2746,7 @@
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com",
"time": "2016-07-30 07:22:48"
"time": "2016-07-30T07:22:48+00:00"
},
{
"name": "symfony/var-dumper",
@@ -2758,7 +2809,7 @@
"debug",
"dump"
],
"time": "2016-07-26 08:03:56"
"time": "2016-07-26T08:03:56+00:00"
},
{
"name": "vlucas/phpdotenv",
@@ -2808,7 +2859,7 @@
"env",
"environment"
],
"time": "2016-09-01 10:05:43"
"time": "2016-09-01T10:05:43+00:00"
},
{
"name": "watson/sitemap",
@@ -2854,7 +2905,7 @@
"laravel",
"sitemaps"
],
"time": "2016-08-18 23:27:53"
"time": "2016-08-18T23:27:53+00:00"
},
{
"name": "webwizo/laravel-shortcodes",
@@ -2915,7 +2966,7 @@
"shortcodes",
"wordpress"
],
"time": "2016-08-25 06:02:46"
"time": "2016-08-25T06:02:46+00:00"
}
],
"packages-dev": [
@@ -2971,7 +3022,7 @@
"profiler",
"webprofiler"
],
"time": "2016-08-25 20:55:54"
"time": "2016-08-25T20:55:54+00:00"
},
{
"name": "doctrine/instantiator",
@@ -3025,7 +3076,7 @@
"constructor",
"instantiate"
],
"time": "2016-03-31 10:24:22"
"time": "2016-03-31T10:24:22+00:00"
},
{
"name": "fzaninotto/faker",
@@ -3075,7 +3126,7 @@
"faker",
"fixtures"
],
"time": "2016-09-01 09:55:47"
"time": "2016-09-01T09:55:47+00:00"
},
{
"name": "hamcrest/hamcrest-php",
@@ -3126,7 +3177,7 @@
"keywords": [
"test"
],
"time": "2016-01-19 12:08:55"
"time": "2016-01-19T12:08:55+00:00"
},
{
"name": "ignasbernotas/laravel-model-generator",
@@ -3169,7 +3220,7 @@
"model",
"schema"
],
"time": "2016-05-24 16:57:40"
"time": "2016-05-24T16:57:40+00:00"
},
{
"name": "maximebf/debugbar",
@@ -3230,7 +3281,7 @@
"debug",
"debugbar"
],
"time": "2016-08-28 15:57:48"
"time": "2016-08-28T15:57:48+00:00"
},
{
"name": "mockery/mockery",
@@ -3295,7 +3346,7 @@
"test double",
"testing"
],
"time": "2016-09-03 07:05:34"
"time": "2016-09-03T07:05:34+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -3349,7 +3400,7 @@
"reflection",
"static analysis"
],
"time": "2015-12-27 11:43:31"
"time": "2015-12-27T11:43:31+00:00"
},
{
"name": "phpdocumentor/reflection-docblock",
@@ -3394,7 +3445,7 @@
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"time": "2016-06-10 09:48:41"
"time": "2016-06-10T09:48:41+00:00"
},
{
"name": "phpdocumentor/type-resolver",
@@ -3441,7 +3492,7 @@
"email": "me@mikevanriel.com"
}
],
"time": "2016-06-10 07:14:17"
"time": "2016-06-10T07:14:17+00:00"
},
{
"name": "phpspec/prophecy",
@@ -3503,7 +3554,7 @@
"spy",
"stub"
],
"time": "2016-07-19 16:08:43"
"time": "2016-07-19T16:08:43+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -3565,7 +3616,7 @@
"testing",
"xunit"
],
"time": "2015-10-06 15:47:00"
"time": "2015-10-06T15:47:00+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -3612,7 +3663,7 @@
"filesystem",
"iterator"
],
"time": "2015-06-21 13:08:43"
"time": "2015-06-21T13:08:43+00:00"
},
{
"name": "phpunit/php-text-template",
@@ -3653,7 +3704,7 @@
"keywords": [
"template"
],
"time": "2015-06-21 13:50:34"
"time": "2015-06-21T13:50:34+00:00"
},
{
"name": "phpunit/php-timer",
@@ -3697,7 +3748,7 @@
"keywords": [
"timer"
],
"time": "2016-05-12 18:03:57"
"time": "2016-05-12T18:03:57+00:00"
},
{
"name": "phpunit/php-token-stream",
@@ -3746,7 +3797,7 @@
"keywords": [
"tokenizer"
],
"time": "2015-09-23 14:46:55"
"time": "2015-09-23T14:46:55+00:00"
},
{
"name": "phpunit/phpunit",
@@ -3818,7 +3869,7 @@
"testing",
"xunit"
],
"time": "2016-08-28 06:58:45"
"time": "2016-08-28T06:58:45+00:00"
},
{
"name": "phpunit/phpunit-mock-objects",
@@ -3874,7 +3925,7 @@
"mock",
"xunit"
],
"time": "2015-10-02 06:51:40"
"time": "2015-10-02T06:51:40+00:00"
},
{
"name": "sebastian/comparator",
@@ -3938,7 +3989,7 @@
"compare",
"equality"
],
"time": "2015-07-26 15:48:44"
"time": "2015-07-26T15:48:44+00:00"
},
{
"name": "sebastian/diff",
@@ -3990,7 +4041,7 @@
"keywords": [
"diff"
],
"time": "2015-12-08 07:14:41"
"time": "2015-12-08T07:14:41+00:00"
},
{
"name": "sebastian/environment",
@@ -4040,7 +4091,7 @@
"environment",
"hhvm"
],
"time": "2016-08-18 05:49:44"
"time": "2016-08-18T05:49:44+00:00"
},
{
"name": "sebastian/exporter",
@@ -4107,7 +4158,7 @@
"export",
"exporter"
],
"time": "2016-06-17 09:04:28"
"time": "2016-06-17T09:04:28+00:00"
},
{
"name": "sebastian/global-state",
@@ -4158,7 +4209,7 @@
"keywords": [
"global state"
],
"time": "2015-10-12 03:26:01"
"time": "2015-10-12T03:26:01+00:00"
},
{
"name": "sebastian/recursion-context",
@@ -4211,7 +4262,7 @@
],
"description": "Provides functionality to recursively process PHP variables",
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
"time": "2016-01-28 05:39:29"
"time": "2016-01-28T05:39:29+00:00"
},
{
"name": "sebastian/version",
@@ -4246,7 +4297,7 @@
],
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
"homepage": "https://github.com/sebastianbergmann/version",
"time": "2015-06-21 13:59:46"
"time": "2015-06-21T13:59:46+00:00"
},
{
"name": "symfony/css-selector",
@@ -4299,7 +4350,7 @@
],
"description": "Symfony CssSelector Component",
"homepage": "https://symfony.com",
"time": "2016-06-29 05:40:00"
"time": "2016-06-29T05:40:00+00:00"
},
{
"name": "symfony/dom-crawler",
@@ -4355,7 +4406,7 @@
],
"description": "Symfony DomCrawler Component",
"homepage": "https://symfony.com",
"time": "2016-07-30 07:22:48"
"time": "2016-07-30T07:22:48+00:00"
},
{
"name": "symfony/yaml",
@@ -4410,7 +4461,7 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
"time": "2016-09-02 02:14:06"
"time": "2016-09-02T02:14:06+00:00"
},
{
"name": "webmozart/assert",
@@ -4460,12 +4511,14 @@
"check",
"validate"
],
"time": "2016-08-18 09:30:53"
"time": "2016-08-18T09:30:53+00:00"
}
],
"aliases": [],
"minimum-stability": "dev",
"stability-flags": [],
"stability-flags": {
"greggilbert/recaptcha": 20
},
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
+1
View File
@@ -19,3 +19,4 @@
!sitemap.php
!image.php
!view.php
!recaptcha.php
+2
View File
@@ -172,6 +172,7 @@ return [
App\Providers\RouteServiceProvider::class,
App\Providers\BladeExtender::class,
\App\Providers\TemplateServiceProvider::class,
\Greggilbert\Recaptcha\RecaptchaServiceProvider::class,
],
/*
@@ -221,6 +222,7 @@ return [
'Validator' => Illuminate\Support\Facades\Validator::class,
'LaravelLocalization' => Mcamara\LaravelLocalization\Facades\LaravelLocalization::class,
'View' => Illuminate\Support\Facades\View::class,
'Recaptcha' => Greggilbert\Recaptcha\Facades\Recaptcha::class,
'Shortcode' => Webwizo\Shortcodes\Facades\Shortcode::class,
],
+66
View File
@@ -0,0 +1,66 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| API Keys
|--------------------------------------------------------------------------
|
| Set the public and private API keys as provided by reCAPTCHA.
|
| In version 2 of reCAPTCHA, public_key is the Site key,
| and private_key is the Secret key.
|
*/
'public_key' => env('RECAPTCHA_PUBLIC_KEY', ''),
'private_key' => env('RECAPTCHA_PRIVATE_KEY', ''),
/*
|--------------------------------------------------------------------------
| Template
|--------------------------------------------------------------------------
|
| Set a template to use if you don't want to use the standard one.
|
*/
'template' => '',
/*
|--------------------------------------------------------------------------
| Driver
|--------------------------------------------------------------------------
|
| Determine how to call out to get response; values are 'curl' or 'native'.
| Only applies to v2.
|
*/
'driver' => 'curl',
/*
|--------------------------------------------------------------------------
| Options
|--------------------------------------------------------------------------
|
| Various options for the driver
|
*/
'options' => [
'curl_timeout' => 1,
'curl_verify' => true,
],
/*
|--------------------------------------------------------------------------
| Version
|--------------------------------------------------------------------------
|
| Set which version of ReCaptcha to use.
|
*/
'version' => 2,
];
@@ -12,9 +12,10 @@ class SendNewEmailRequest extends Request
public function rules()
{
return [
'name' => 'required',
'email' => 'required|email',
'message' => 'required',
'name' => 'required',
'email' => 'required|email',
'message' => 'required',
'g-recaptcha-response' => 'required|recaptcha',
];
}
}
@@ -1,18 +0,0 @@
<label class="control-label">
@lang('admin/settings.recaptchaSiteKey')
</label>
<input class="form-control" type="text" name="recaptchaSiteKey" value="{{old('recaptchaSiteKey', isset($settings->recaptchaSiteKey) ? $settings->recaptchaSiteKey['val'] : '')}}" />
<label class="control-label">
@lang('admin/settings.recaptchaSecret')
</label>
<input class="form-control" type="text" name="recaptchaSecret" value="{{old('recaptchaSecret', isset($settings->recaptchaSecret) ? $settings->recaptchaSecret['val'] : '')}}" />
<label>
<input class="checkbox" value="1"
@if(old('useInvisibleRecaptcha', setting('useInvisibleRecaptcha'))) checked @endif name="useInvisibleRecaptcha" type="checkbox">
<span>@lang('admin/settings.useInvisibleRecaptcha')</span>
</label>