Compare commits
17 Commits
Author | SHA1 | Date | |
---|---|---|---|
5778c54ae0 | |||
9b65966d27 | |||
633e30ae47 | |||
2f96c759ab | |||
2769e4791a | |||
5e434e1859 | |||
df6915eb5e | |||
b7685e63a1 | |||
15bee25e9c | |||
3a4e31473a | |||
fec0ebb2f1 | |||
cdbe566acc | |||
93f9d3c1a7 | |||
d4475118d0 | |||
b8a129fc2a | |||
fe4b0dea2b | |||
640acadeea |
57
README.md
57
README.md
@ -12,10 +12,10 @@ Compatibility with Symfony
|
||||
==========================
|
||||
|
||||
| CaptchaBundle | Symfony | PHP |
|
||||
|:---------------:|:---------:|:-------:|
|
||||
| 3.* | 4.* - 5.* | 7.1 > |
|
||||
| 2.* | 2.8 - 3.* | 5.3.9 > |
|
||||
| 1.* | 2.1 - 2.7 | 5.3.0 > |
|
||||
|:---------------:|:---------:|:--------:|
|
||||
| 2.1.* | 4.* - 5.* | >= 7.1 |
|
||||
| 2.0.* | 2.8 - 3.* | >= 5.3.9 |
|
||||
| 1.* | 2.1 - 2.7 | >= 5.3.0 |
|
||||
|
||||
|
||||
Installation
|
||||
@ -24,20 +24,30 @@ Installation
|
||||
### Step 1: Download the GregwarCaptchaBundle
|
||||
|
||||
Use composer require to download and install the package.
|
||||
At the end of the installation you can automaticly create the configuration thanks to the Symfony recipe.
|
||||
At the end of the installation, the bundle is automatically registered thanks to the Symfony recipe.
|
||||
|
||||
``` bash
|
||||
composer require gregwar/captcha-bundle
|
||||
```
|
||||
|
||||
If you don't use flex, register it manually:
|
||||
```php
|
||||
<?php
|
||||
// config/bundles.php
|
||||
return [
|
||||
// ...
|
||||
Gregwar\CaptchaBundle\GregwarCaptchaBundle::class => ['all' => true]
|
||||
];
|
||||
```
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
If you made the configuration automaticly trough the Symfony recipe, you should have the following config file `/config/packages/gregwar_captcha.yaml`
|
||||
|
||||
Otherwise you can create it manually `/config/packages/gregwar_captcha.yaml` with the following default configuration:
|
||||
If you need to customize the global bundle configuration, you can create a `/config/packages/gregwar_captcha.yaml` file with your configuration:
|
||||
``` yaml
|
||||
gregwar_captcha: ~
|
||||
gregwar_captcha:
|
||||
width: 160
|
||||
height: 50
|
||||
```
|
||||
|
||||
Usage
|
||||
@ -47,10 +57,10 @@ You can use the "captcha" type in your forms this way:
|
||||
|
||||
``` php
|
||||
<?php
|
||||
use Gregwar\CaptchaBundle\Type\CaptchaType;
|
||||
// ...
|
||||
$builder->add('captcha', CaptchaType::class); // That's all !
|
||||
// ...
|
||||
use Gregwar\CaptchaBundle\Type\CaptchaType;
|
||||
// ...
|
||||
$builder->add('captcha', CaptchaType::class); // That's all !
|
||||
// ...
|
||||
```
|
||||
|
||||
Note that the generated image will, by default, be embedded in the HTML document
|
||||
@ -91,24 +101,25 @@ number of lines depends on the size of the image). (default=null)
|
||||
* **background_images**: Sets custom user defined images as the captcha background (1 image is selected randomly). It is recommended to turn off all the effects on the image (ignore_all_effects). The full paths to the images must be passed.
|
||||
* **interpolation**: enable or disable the interpolation on the captcha
|
||||
* **ignore_all_effects**: Recommended to use when setting background images, will disable all image effects.
|
||||
* **session_key**, if you want to host multiple CAPTCHA on the same page, you might have different session keys to ensure proper storage of the clear phrase for those different forms
|
||||
|
||||
Example :
|
||||
|
||||
``` php
|
||||
<?php
|
||||
use Gregwar\CaptchaBundle\Type\CaptchaType;
|
||||
// ...
|
||||
$builder->add('captcha', CaptchaType::class, array(
|
||||
use Gregwar\CaptchaBundle\Type\CaptchaType;
|
||||
// ...
|
||||
$builder->add('captcha', CaptchaType::class, array(
|
||||
'width' => 200,
|
||||
'height' => 50,
|
||||
'length' => 6,
|
||||
));
|
||||
));
|
||||
```
|
||||
|
||||
You can also set these options for your whole application using the `gregwar_captcha`
|
||||
configuration entry in your `config.yml` file:
|
||||
``` yaml
|
||||
gregwar_captcha:
|
||||
gregwar_captcha:
|
||||
width: 200
|
||||
height: 50
|
||||
length: 6
|
||||
@ -121,15 +132,17 @@ The messages are using the translator, you can either change the `invalid_messag
|
||||
|
||||
As URL
|
||||
============
|
||||
To use a URL to generate a captcha image, you must add the bundle's routing configuration to your app/routing.yml file:
|
||||
To use a URL to generate a captcha image, you must add the bundle's routing configuration to your `config/routes.yaml` file:
|
||||
|
||||
``` yaml
|
||||
gregwar_captcha_routing:
|
||||
gregwar_captcha_routing:
|
||||
resource: "@GregwarCaptchaBundle/Resources/config/routing/routing.yml"
|
||||
```
|
||||
|
||||
This will use the bundle's route of "/generate-captcha/{key}" to handle the generation. If this route conflicts with an application route, you can prefix the bundle's routes when you import:
|
||||
This will use the bundle's route of `/generate-captcha/{key}` to handle the generation. If this route conflicts with an application route, you can prefix the bundle's routes when you import:
|
||||
|
||||
``` yaml
|
||||
gregwar_captcha_routing:
|
||||
gregwar_captcha_routing:
|
||||
resource: "@GregwarCaptchaBundle/Resources/config/routing/routing.yml"
|
||||
prefix: /_gcb
|
||||
```
|
||||
|
@ -7,12 +7,17 @@ parameters:
|
||||
gregwar_captcha.phrase_builder.class: Gregwar\Captcha\PhraseBuilder
|
||||
|
||||
services:
|
||||
Gregwar\CaptchaBundle\Controller\CaptchaController:
|
||||
public: true
|
||||
alias: 'gregwar_captcha.controller'
|
||||
|
||||
gregwar_captcha.controller:
|
||||
class: '%gregwar_captcha.controller.class%'
|
||||
public: true
|
||||
arguments:
|
||||
- '@gregwar_captcha.generator'
|
||||
- '%gregwar_captcha.config%'
|
||||
autowire: true
|
||||
|
||||
# captcha.type:
|
||||
gregwar_captcha.type:
|
||||
|
@ -62,7 +62,8 @@ class CaptchaType extends AbstractType
|
||||
sprintf('%s%s', self::SESSION_KEY_PREFIX, $options['session_key']),
|
||||
$options['invalid_message'],
|
||||
$options['bypass_code'],
|
||||
$options['humanity']
|
||||
$options['humanity'],
|
||||
$options['request']
|
||||
);
|
||||
|
||||
$builder->addEventListener(FormEvents::POST_SUBMIT, array($validator, 'validate'));
|
||||
@ -121,6 +122,7 @@ class CaptchaType extends AbstractType
|
||||
public function configureOptions(OptionsResolver $resolver)
|
||||
{
|
||||
$this->options['mapped'] = false;
|
||||
$this->options['request'] = null;
|
||||
$resolver->setDefaults($this->options);
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,7 @@ use Symfony\Component\HttpFoundation\Session\SessionInterface;
|
||||
use Symfony\Component\Form\FormError;
|
||||
use Symfony\Component\Form\FormEvent;
|
||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
/**
|
||||
* Captcha validator.
|
||||
@ -54,13 +55,21 @@ class CaptchaValidator
|
||||
*/
|
||||
private $translator;
|
||||
|
||||
/**
|
||||
* Request
|
||||
*
|
||||
* @var Request
|
||||
*/
|
||||
private $req;
|
||||
|
||||
public function __construct(
|
||||
TranslatorInterface $translator,
|
||||
SessionInterface $session,
|
||||
string $key,
|
||||
string $invalidMessage,
|
||||
?string $bypassCode,
|
||||
int $humanity
|
||||
int $humanity,
|
||||
?Request $req
|
||||
) {
|
||||
$this->translator = $translator;
|
||||
$this->session = $session;
|
||||
@ -68,6 +77,7 @@ class CaptchaValidator
|
||||
$this->invalidMessage = $invalidMessage;
|
||||
$this->bypassCode = $bypassCode;
|
||||
$this->humanity = $humanity;
|
||||
$this->req = $req;
|
||||
}
|
||||
|
||||
public function validate(FormEvent $event): void
|
||||
@ -94,12 +104,13 @@ class CaptchaValidator
|
||||
}
|
||||
}
|
||||
|
||||
if (null == $this->req || 1 < $this->req->get('flow_registration_step')) {
|
||||
$this->session->remove($this->key);
|
||||
|
||||
if ($this->session->has($this->key.'_fingerprint')) {
|
||||
$this->session->remove($this->key.'_fingerprint');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the expected CAPTCHA code.
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"name": "gregwar/captcha-bundle",
|
||||
"type": "captcha-bundle",
|
||||
"name": "cadoles/captcha",
|
||||
"type": "symfony-bundle",
|
||||
"description": "Captcha bundle",
|
||||
"keywords": ["symfony2", "symfony", "captcha", "bot", "visual", "code", "security", "spam"],
|
||||
"homepage": "https://github.com/Gregwar/CaptchaBundle",
|
||||
"homepage": "https://github.com/Cadoles/CaptchaBundle",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
@ -17,9 +17,9 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": "^7.1.3",
|
||||
"php": ">=7.1.3",
|
||||
"ext-gd": "*",
|
||||
"gregwar/captcha": "~1.1",
|
||||
"gregwar/captcha": "^1.1.9",
|
||||
"symfony/form": "~4.0|~5.0",
|
||||
"symfony/framework-bundle": "~4.0|~5.0",
|
||||
"symfony/translation": "~4.0|^5.0",
|
||||
|
Reference in New Issue
Block a user