Flask-captcha2


NameFlask-captcha2 JSON
Version 3.0.5 PyPI version JSON
download
home_pagehttps://github.com/alisharify7/flask_captcha2
SummaryFlask plugin to integrate Google captcha (version 2, 3) and local captcha (image, voice) with Flask applications
upload_time2024-07-21 17:06:28
maintainerNone
docs_urlNone
authorali sharify
requires_python>=3.8
licenseMIT
keywords flask security google captcha for flask captcha flask flask-captcha flask-captcha2 flask_captcha2 flask-images-captcha
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            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"
}
        
Elapsed time: 0.33161s