flask\_captcha2
===============
<img src="https://github.com/alisharify7/flask_captcha2/blob/main/docs/flask-captcha2.png?raw=true">
Flask plugin to integrate Google captcha (version 2, 3) and local
captcha (image, voice) with Flask applications
<a href="https://www.coffeete.ir/alisharify7">Donate/Support [Optional]</a>
<p>
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/alisharify7/flask_captcha2">
<img alt="GitHub contributors" src="https://img.shields.io/github/contributors/alisharify7/flask_captcha2">
<img alt="GitHub repo Licence" src="https://img.shields.io/pypi/l/flask_captcha2">
[![Downloads](https://static.pepy.tech/badge/flask-captcha2)](https://pepy.tech/project/flask-captcha2)
[![Downloads](https://static.pepy.tech/badge/flask-captcha2/month)](https://pepy.tech/project/flask-captcha2)
<br>
</p>
0.0 how to install:
-------------------
``` {.}
pip install -U flask_captcha2
```
0.1 how to use:
---------------
```python
from flask import Flask
from flask_captcha2 import FlaskCaptcha
app = Flask(__name__)
google_captcha2_config_list = {
"CAPTCHA_PRIVATE_KEY": "hish !",
"CAPTCHA_PUBLIC_KEY": "hish !",
'CAPTCHA_ENABLED': True, # captcha status <True, False> True: Production , False: development
"CAPTCHA_LOG": True, # show captcha logs in console
"CAPTCHA_LANGUAGE": "en" # captcha language
}
google_captcha3_config_list = {
"CAPTCHA_PRIVATE_KEY": "hish !",
"CAPTCHA_PUBLIC_KEY": "hish !",
'CAPTCHA_ENABLED': True, # captcha status <True, False> True: Production , False: development
"CAPTCHA_SCORE": 0.5, #google captcha version3 works with scores
"CAPTCHA_LOG": True # show captcha requests and logs in terminal > stdout
}
MasterCaptcha = FlaskCaptcha(app=app) # app is required
# passing config list directly
google_captcha2 = MasterCaptcha.getGoogleCaptcha2(name='g-captcha2', conf=google_captcha2_config_list)
google_captcha3 = MasterCaptcha.getGoogleCaptcha3(name='g-captcha3', conf=google_captcha3_config_list)
# Names are important. Do not use repeated names and choose names with meaning
```
## example:
```python
# you can also pass nothing and it will be uses app.config for filling configs
app.config.update(google_captcha3_config_list) # set configs in app.config
Master_captcha = FlaskCaptcha(app=app) # app is required
# No need to send conf_list, it will be set automatically from app.config
google_captcha2 = Master_captcha.getGoogleCaptcha2(name='g-captcha2')
```
0.2 how use in templates for rendering Captcha Widget:
------------------------------------------------------
#### Use < captcha.render_captcha > Filter to render a captcha in html
##### -> remember name argument in crating a captcha object
```python
google_captcha2 = Master_captcha.getGoogleCaptcha2(name='g-captcha2') # name
google_captcha3 = Master_captcha.getGoogleCaptcha3(name='g-captcha3') # name
```
for rendering a captcha width you should pass name to < model_name > in < captcha.render_captcha >
## rendering Google Version 2 Captcha:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Captcha version 2</title>
</head>
<body>
<form method="POST" action="some-url">
<input placeholder="username" type="text" name="username" id="">
<br>
<input placeholder="password" type="password" name="password" id="">
<br>
<input value="submit" type="submit">
{# model_name is required #}
{{
captcha.render_captcha (
model_name='g-captcha2', #{Required} name that are passed in getGoogleCaptcha2 method
class='custom-css-class-for-this-captcha', #[Optional] add class to captcha widget
style='text:red;', #[Optional] add inline style to captcha widget
id='g-captcha-v2', #[Optional] add id to captcha widget
dataset="data-checked='true';" #[Optional] add dataset to captcha widget
)
}}
</form>
</body>
</html>
```
## rendering Google Version 3 Captcha :
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Captcha version 3</title>
</head>
<body>
<form method="POST" action="/v3" id="ParentForm">
{# you can also use Flask-wtf forms #}
<input placeholder="username" type="text" name="username" id="">
<br>
<input placeholder="password" type="password" name="password" id="">
<br>
{{
captcha.render_captcha (
model_name='g-captcha3', #{Required} name that are passed in getGoogleCaptcha3 method
class='custom-class-name', #[Optional] add css class to captcha widget
id="SubmitBtnForm", #[Optional] add id to captcha widget
style=" background-color:blue; color:white; font-size:2rem;", #[Optional] add style to captcha widget
dataset="data-ok='true' data-test='test data set check' ", # [Optional]add dataset to captcha widget
parent_form_id="ParentForm", #{Required} id of form that this captcha button is init
button_text="submit This Form", #{Required} text context of submit button
event=" onclick='alert('js alert');' ", #[Optional] add js event to captcha widget
hide_badge=True #[Optional] hide captcha banner in page <its just hide it but captcha stil works>
)
}}
</form>
</body>
</html>
```
0.3 How verify Captcha:
-----------------------
Use is_verify method on captcha objects for validating a request that
contains a captcha
```python
@app.route("/v2-verify/", methods=["POST"])
def index():
# with is_verify method verify the captcha
if google_captcha2.is_verify():
return "Captcha is ok."
else:
return "Try again!"
@app.route("/v3-verify/", methods=["POST"])
def index():
# with is_verify method verify the captcha
if google_captcha3.is_verify():
return "Captcha is ok."
else:
return "Try again!"
```
### Version History:
- version 2.0.0 Released: May 18, 2023
- Changes: - None
- version 2.0.1 Released: June 9, 2023
- Changes:
> - Change FlaskCaptcha Class to FlaskCaptcha2
> - Fix bug in rendering captcha widget when captcha-enable was False
- version 3.0.0 Released: September 9, 2023
- Changes:
> - change Package structure
> - Add Captcha version 3 and fix some bugs in captcha version 2
- version 3.0.4 Released: October 27, 2023
- Changes:
> - reformat/Refactor project structure
> - adding FlaskCaptcha Master class
> - adding getFlaskCaptcha3 method for getting google-captcha
> version 3
> - adding getFlaskCaptcha2 method for getting google-captcha version 2
> - adding name spacing for each captcha
> - adding the ability to create multiple captchas with different versions
> - adding pytest base test
- version 3.0.5 Released: July 21, 2024
- Changes:
> - reformat/Refactor code
> - rename render_captcha parameters
Raw data
{
"_id": null,
"home_page": "https://github.com/alisharify7/flask_captcha2",
"name": "Flask-captcha2",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "flask security, Google captcha for flask, captcha, flask, flask-captcha, flask-captcha2, flask_captcha2, flask-images-captcha",
"author": "ali sharify",
"author_email": "alisharifyofficial@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/44/f6/a1ea2518a5b450572aa5d95d1bb4f33e5fa48a94d861772c3940ec6b1797/Flask-captcha2-3.0.5.tar.gz",
"platform": null,
"description": "flask\\_captcha2\r\n===============\r\n\r\n<img src=\"https://github.com/alisharify7/flask_captcha2/blob/main/docs/flask-captcha2.png?raw=true\">\r\n\r\nFlask plugin to integrate Google captcha (version 2, 3) and local\r\ncaptcha (image, voice) with Flask applications\r\n\r\n<a href=\"https://www.coffeete.ir/alisharify7\">Donate/Support [Optional]</a>\r\n\r\n<p>\r\n <img alt=\"GitHub repo size\" src=\"https://img.shields.io/github/repo-size/alisharify7/flask_captcha2\">\r\n <img alt=\"GitHub contributors\" src=\"https://img.shields.io/github/contributors/alisharify7/flask_captcha2\">\r\n <img alt=\"GitHub repo Licence\" src=\"https://img.shields.io/pypi/l/flask_captcha2\">\r\n \r\n[![Downloads](https://static.pepy.tech/badge/flask-captcha2)](https://pepy.tech/project/flask-captcha2)\r\n[![Downloads](https://static.pepy.tech/badge/flask-captcha2/month)](https://pepy.tech/project/flask-captcha2)\r\n \r\n <br>\r\n</p>\r\n\r\n0.0 how to install:\r\n-------------------\r\n\r\n``` {.}\r\npip install -U flask_captcha2 \r\n```\r\n\r\n0.1 how to use:\r\n---------------\r\n\r\n```python\r\nfrom flask import Flask\r\nfrom flask_captcha2 import FlaskCaptcha\r\n\r\napp = Flask(__name__)\r\n\r\n\r\n google_captcha2_config_list = {\r\n \"CAPTCHA_PRIVATE_KEY\": \"hish !\",\r\n \"CAPTCHA_PUBLIC_KEY\": \"hish !\",\r\n 'CAPTCHA_ENABLED': True, # captcha status <True, False> True: Production , False: development\r\n \"CAPTCHA_LOG\": True, # show captcha logs in console\r\n \"CAPTCHA_LANGUAGE\": \"en\" # captcha language\r\n }\r\n\r\n google_captcha3_config_list = {\r\n \"CAPTCHA_PRIVATE_KEY\": \"hish !\",\r\n \"CAPTCHA_PUBLIC_KEY\": \"hish !\",\r\n 'CAPTCHA_ENABLED': True, # captcha status <True, False> True: Production , False: development\r\n \"CAPTCHA_SCORE\": 0.5, #google captcha version3 works with scores\r\n \"CAPTCHA_LOG\": True # show captcha requests and logs in terminal > stdout\r\n }\r\n\r\n MasterCaptcha = FlaskCaptcha(app=app) # app is required\r\n # passing config list directly\r\n google_captcha2 = MasterCaptcha.getGoogleCaptcha2(name='g-captcha2', conf=google_captcha2_config_list)\r\n google_captcha3 = MasterCaptcha.getGoogleCaptcha3(name='g-captcha3', conf=google_captcha3_config_list)\r\n # Names are important. Do not use repeated names and choose names with meaning\r\n```\r\n\r\n## example:\r\n```python\r\n# you can also pass nothing and it will be uses app.config for filling configs\r\n app.config.update(google_captcha3_config_list) # set configs in app.config\r\n Master_captcha = FlaskCaptcha(app=app) # app is required\r\n # No need to send conf_list, it will be set automatically from app.config\r\n google_captcha2 = Master_captcha.getGoogleCaptcha2(name='g-captcha2')\r\n```\r\n\r\n0.2 how use in templates for rendering Captcha Widget:\r\n------------------------------------------------------\r\n\r\n#### Use < captcha.render_captcha > Filter to render a captcha in html\r\n\r\n##### -> remember name argument in crating a captcha object\r\n\r\n```python\r\ngoogle_captcha2 = Master_captcha.getGoogleCaptcha2(name='g-captcha2') # name\r\ngoogle_captcha3 = Master_captcha.getGoogleCaptcha3(name='g-captcha3') # name\r\n```\r\n\r\nfor rendering a captcha width you should pass name to < model_name > in < captcha.render_captcha >\r\n\r\n## rendering Google Version 2 Captcha:\r\n\r\n```html\r\n<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n <meta charset=\"UTF-8\">\r\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n <title>Captcha version 2</title>\r\n</head>\r\n<body>\r\n\r\n <form method=\"POST\" action=\"some-url\">\r\n <input placeholder=\"username\" type=\"text\" name=\"username\" id=\"\">\r\n <br>\r\n <input placeholder=\"password\" type=\"password\" name=\"password\" id=\"\">\r\n <br>\r\n <input value=\"submit\" type=\"submit\">\r\n\r\n {# model_name is required #}\r\n {{\r\n captcha.render_captcha (\r\n model_name='g-captcha2', #{Required} name that are passed in getGoogleCaptcha2 method\r\n class='custom-css-class-for-this-captcha', #[Optional] add class to captcha widget\r\n style='text:red;', #[Optional] add inline style to captcha widget\r\n id='g-captcha-v2', #[Optional] add id to captcha widget\r\n dataset=\"data-checked='true';\" #[Optional] add dataset to captcha widget\r\n )\r\n }}\r\n\r\n </form>\r\n\r\n</body>\r\n</html>\r\n```\r\n\r\n## rendering Google Version 3 Captcha :\r\n\r\n```html\r\n<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n <meta charset=\"UTF-8\">\r\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n <title>Captcha version 3</title>\r\n</head>\r\n<body>\r\n\r\n <form method=\"POST\" action=\"/v3\" id=\"ParentForm\">\r\n {# you can also use Flask-wtf forms #}\r\n <input placeholder=\"username\" type=\"text\" name=\"username\" id=\"\">\r\n <br>\r\n <input placeholder=\"password\" type=\"password\" name=\"password\" id=\"\">\r\n <br>\r\n {{\r\n captcha.render_captcha (\r\n model_name='g-captcha3', #{Required} name that are passed in getGoogleCaptcha3 method\r\n class='custom-class-name', #[Optional] add css class to captcha widget\r\n id=\"SubmitBtnForm\", #[Optional] add id to captcha widget\r\n style=\" background-color:blue; color:white; font-size:2rem;\", #[Optional] add style to captcha widget\r\n dataset=\"data-ok='true' data-test='test data set check' \", # [Optional]add dataset to captcha widget\r\n parent_form_id=\"ParentForm\", #{Required} id of form that this captcha button is init\r\n button_text=\"submit This Form\", #{Required} text context of submit button\r\n event=\" onclick='alert('js alert');' \", #[Optional] add js event to captcha widget\r\n hide_badge=True #[Optional] hide captcha banner in page <its just hide it but captcha stil works>\r\n )\r\n }}\r\n </form>\r\n</body>\r\n</html>\r\n```\r\n\r\n0.3 How verify Captcha:\r\n-----------------------\r\n\r\nUse is_verify method on captcha objects for validating a request that\r\ncontains a captcha \r\n\r\n```python\r\n@app.route(\"/v2-verify/\", methods=[\"POST\"])\r\ndef index():\r\n # with is_verify method verify the captcha \r\n if google_captcha2.is_verify():\r\n return \"Captcha is ok.\"\r\n else:\r\n return \"Try again!\"\r\n\r\n@app.route(\"/v3-verify/\", methods=[\"POST\"])\r\ndef index():\r\n # with is_verify method verify the captcha\r\n if google_captcha3.is_verify():\r\n return \"Captcha is ok.\"\r\n else:\r\n return \"Try again!\"\r\n```\r\n\r\n### Version History:\r\n\r\n- version 2.0.0 Released: May 18, 2023\r\n\r\n- Changes: - None\r\n\r\n- version 2.0.1 Released: June 9, 2023\r\n\r\n- Changes:\r\n\r\n > - Change FlaskCaptcha Class to FlaskCaptcha2\r\n > - Fix bug in rendering captcha widget when captcha-enable was False\r\n\r\n- version 3.0.0 Released: September 9, 2023\r\n\r\n- Changes:\r\n\r\n > - change Package structure\r\n > - Add Captcha version 3 and fix some bugs in captcha version 2\r\n\r\n- version 3.0.4 Released: October 27, 2023\r\n- Changes:\r\n\r\n > - reformat/Refactor project structure\r\n > - adding FlaskCaptcha Master class\r\n > - adding getFlaskCaptcha3 method for getting google-captcha\r\n > version 3\r\n > - adding getFlaskCaptcha2 method for getting google-captcha version 2\r\n > - adding name spacing for each captcha\r\n > - adding the ability to create multiple captchas with different versions\r\n > - adding pytest base test\r\n\r\n \r\n- version 3.0.5 Released: July 21, 2024\r\n- Changes:\r\n\r\n > - reformat/Refactor code\r\n > - rename render_captcha parameters\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Flask plugin to integrate Google captcha (version 2, 3) and local captcha (image, voice) with Flask applications",
"version": "3.0.5",
"project_urls": {
"Homepage": "https://github.com/alisharify7/flask_captcha2"
},
"split_keywords": [
"flask security",
" google captcha for flask",
" captcha",
" flask",
" flask-captcha",
" flask-captcha2",
" flask_captcha2",
" flask-images-captcha"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "32e143dd401cce4e12838d7d98987ccbb2c3934f8c73959529e583cda93a2570",
"md5": "526df6d52a7c5f408ff13b1fcc750474",
"sha256": "e96fd524a480b48504d4784bcc2481e32f5f1689538a4ccd5bbad1f8b6813c80"
},
"downloads": -1,
"filename": "Flask_captcha2-3.0.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "526df6d52a7c5f408ff13b1fcc750474",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 16577,
"upload_time": "2024-07-21T17:06:26",
"upload_time_iso_8601": "2024-07-21T17:06:26.735795Z",
"url": "https://files.pythonhosted.org/packages/32/e1/43dd401cce4e12838d7d98987ccbb2c3934f8c73959529e583cda93a2570/Flask_captcha2-3.0.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "44f6a1ea2518a5b450572aa5d95d1bb4f33e5fa48a94d861772c3940ec6b1797",
"md5": "e1359030b3f348e0b29b5c67dec95f21",
"sha256": "860d4e427f1d7a6d3b1ebfa65ee00985ba4297885b2a2411e3d3227c65f599c6"
},
"downloads": -1,
"filename": "Flask-captcha2-3.0.5.tar.gz",
"has_sig": false,
"md5_digest": "e1359030b3f348e0b29b5c67dec95f21",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 12485,
"upload_time": "2024-07-21T17:06:28",
"upload_time_iso_8601": "2024-07-21T17:06:28.722276Z",
"url": "https://files.pythonhosted.org/packages/44/f6/a1ea2518a5b450572aa5d95d1bb4f33e5fa48a94d861772c3940ec6b1797/Flask-captcha2-3.0.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-21 17:06:28",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "alisharify7",
"github_project": "flask_captcha2",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "flask-captcha2"
}