{ "info": { "author": "Peter Volf", "author_email": "do.volfp@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Flask", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# Flask user handler blueprint\n\nLightweight Flask blueprint that provides all the user handling features that are required by a web application in a database-independent way, including:\n\n- User registration, login and session management.\n- Password reset functionality with JWTs.\n- Automatic, safe password handling using [Argon2](https://en.wikipedia.org/wiki/Argon2).\n\nThe blueprint provides the following routes for a web application: `/login`, `/logout`, `/register`, `/request_password_reset`, `/reset/` and `/verify/`. All these routes interact with the user database through an instance of the `UserHandler` class that is a decorator-based database interface, similar in style to `Flask-Login`'s `LoginManager`. All the blueprint routes are backed by ready-to-use HTML templates that are formatted using [BlueprintJS](http://blueprintjs.com/docs/v2/).\n\n## Installation\n\nThe project is available on PyPI as [`user-blueprint`](https://pypi.org/project/user-blueprint/), you can install it with `pip install user-blueprint`.\n\n## How to use\n\nThe blueprint requires the following components to be configured:\n\n- `blueprint.user_handler`: See the documentation of the `UserHandler` class for the details.\n- `LoginManager`: This `Flask-Login` component handles the session management of the Flask application. You need to create an instance of this class and configure it according to the documentation of `Flask-Login`.\n\nA working demo Flask application showing all the required configuration is included in the library, see `demo.py`.\n\n## Dependencies\n\nThe library requires the following dependencies to be installed besides `Flask` itself.\n\n- `Flask-Login`: User session management.\n- `Flask-WTF`: `WTForms` integration for `Flask`.\n- `Passlib`: Password hashing and verification.\n- `PyJWT`: JSON Web Token implementation in Python.\n- `Argon2_cffi`: The preferred Argon2 backend for `Passlib`. See `Passlib`'s documentation for more options.\n\n## License - MIT\n\nThe library is open-sourced under the conditions of the MIT [license](https://choosealicense.com/licenses/mit/).\n\n## Credit\n\nMiguel Grinberg's [Flask Mega-Tutorial](https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world)\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/volfpeter/user-blueprint", "keywords": "flask blueprint user authentication login registration session templates argon2", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "user-blueprint", "package_url": "https://pypi.org/project/user-blueprint/", "platform": "", "project_url": "https://pypi.org/project/user-blueprint/", "project_urls": { "Homepage": "https://github.com/volfpeter/user-blueprint" }, "release_url": "https://pypi.org/project/user-blueprint/0.3.0/", "requires_dist": [ "flask (>=0.12)", "flask-login (>=0.4)", "flask-wtf (>=0.14)", "passlib (>=1.7)", "pyjwt (>=1.5)" ], "requires_python": ">=3.5", "summary": "Flask blueprint that provides all the user handling features that are required by a web application in a database-independent way, including user registration, login, session management, password reset functionality with JWTs, automatic password hashing with Argon2 and of course the all the required route implementations with the corresponding HTML templates (styled using BlueprintJS).", "version": "0.3.0" }, "last_serial": 3926142, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "936da2a8fee8fb56beb9d88e94dfc874", "sha256": "24a57cdff26d31443ad743dea8add70c5719a50d1c217c747598e601ed3b5b9c" }, "downloads": -1, "filename": "user_blueprint-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "936da2a8fee8fb56beb9d88e94dfc874", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9365, "upload_time": "2018-03-17T14:32:09", "url": "https://files.pythonhosted.org/packages/55/c9/5480a77d61d581c18f31acb30c77171a6b0d6070b684915f7236fcd9a1fc/user_blueprint-0.1.0-py3-none-any.whl" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "d54803d9460ba6a954f6c8a1528be998", "sha256": "24d5dfcad3e702ad2f225628906feb25fcf030f12b5d6f5ec5ab7d8622b4c99c" }, "downloads": -1, "filename": "user_blueprint-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d54803d9460ba6a954f6c8a1528be998", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9382, "upload_time": "2018-03-17T14:45:45", "url": "https://files.pythonhosted.org/packages/51/af/8dfbf38138419fe5e2e528d638832fd48ce4d10ba337921b2e24d7f5d64c/user_blueprint-0.1.1-py3-none-any.whl" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "36577ea30afa90af0f64262c3ee44712", "sha256": "a1ebd1e3705323ed950f26f020e917a48dcec068b74f36dcb11b2ef748665938" }, "downloads": -1, "filename": "user_blueprint-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "36577ea30afa90af0f64262c3ee44712", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 10090, "upload_time": "2018-03-17T22:32:26", "url": "https://files.pythonhosted.org/packages/56/27/5989833c47d281f020771e9a90427212c9d7e6dc94ed8a7b88a03683278b/user_blueprint-0.2.0-py3-none-any.whl" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "70378c2f8a3b2c755b71e081c1f2c52a", "sha256": "6d7632e537eb046370c430992fa338712dce0c3f1b4d6f72f026e0805fc1451e" }, "downloads": -1, "filename": "user_blueprint-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "70378c2f8a3b2c755b71e081c1f2c52a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 10431, "upload_time": "2018-06-03T19:53:24", "url": "https://files.pythonhosted.org/packages/2f/e0/9c50133f4da4221d51e9a6b7c3ffd27a5eea04fb379ce9dfb56a4537721c/user_blueprint-0.3.0-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "70378c2f8a3b2c755b71e081c1f2c52a", "sha256": "6d7632e537eb046370c430992fa338712dce0c3f1b4d6f72f026e0805fc1451e" }, "downloads": -1, "filename": "user_blueprint-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "70378c2f8a3b2c755b71e081c1f2c52a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 10431, "upload_time": "2018-06-03T19:53:24", "url": "https://files.pythonhosted.org/packages/2f/e0/9c50133f4da4221d51e9a6b7c3ffd27a5eea04fb379ce9dfb56a4537721c/user_blueprint-0.3.0-py3-none-any.whl" } ] }