{ "info": { "author": "Alex Korienev", "author_email": "alexkorienev@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# Flask-jwtlogin quickstart\nflask-jwtlogin is a lightweight flask extension to handle users in REST APIs \nWhat it offers to you:\n* **jwt_required** decorator to check jwt presence in current request\n* **generate_jwt** func to get token with user identifier encrypted\n* **load_user** for manual loading user from request using callback function\n* **current_user** proxy \n\n### How to use it?\nFirst of all, you need some configuration:\n```python\n{\n 'JWT_HEADER_NAME': 'your_header_name', #header to retrieve token from request\n 'JWT_SECRET_KEY': 'you will never guess me', #keep it secret\n 'JWT_ENCODING_ALGORITHM': 'HS256', #look at algorithms present in PyJWT\n 'JWT_LIFETIME': 3600 * 24 * 7 # in seconds\n}\n```\nThen create a login manager instance.\n```python\nlogin_manager = jwtl.JWTLogin() #creating instance\nlogin_manager.init_app(app) #importing configuration\n```\n\nYou need to set callback function loading users from your storage and to inherit your user class from KnownUser\n```python\nclass User(jwtl.KnownUser):\n \"\"\"Example of class representing user\"\"\"\n def __init__(self, name, age, identifier):\n self.name = name\n self.age = age\n self.identifier = identifier\n \nuser_storage = [ #sample storage\n User(\"Tom\", 22, \"AF5F123\"),\n User(\"Jim\", 25, \"FFF1832\"),\n User(\"Peter\", 18, \"CB0CA931\")]\n\n\n@login_manager.user_loader\ndef load_user(identifier):\n \"\"\"example of user loader function\"\"\"\n for i in user_storage:\n if i.identifier == identifier:\n return i\n```\n\nSample route to generate user tokens: \n```python\n@app.route('/get-token/')\ndef get_token(name):\n \"\"\"Sample view that returns jwt\"\"\"\n for i in user_storage:\n if i.name == name:\n return jsonify(login_manager.generate_jwt_token(i.identifier)) \n abort(401)\n```\n\nSample route to load user:\n```python\n@app.route('/login/')\n@login_manager.jwt_required\ndef login():\n \"\"\"View that loads user from jwt present in request\"\"\"\n user = login_manager.load_user()\n return user.identifier\n```\n\nthe example above shows the way of manual user loading but module also provides suitable proxy\nThe **jwt_required** decorator adds user loaded from request to **flask.g** and **current_user** loads it. \n```python\n@app.route('/current_user_test/')\n@login_manager.jwt_required\ndef test_current_user():\n return jwtl.current_user.identifier\n```\nflask.g lives inside application context (new for each request) so it's safe to store values in API there \n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/AlexPraefectus/flask-jwtlogin/archive/0.1.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/AlexPraefectus/flask-jwtlogin", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "flask_jwtlogin", "package_url": "https://pypi.org/project/flask_jwtlogin/", "platform": "", "project_url": "https://pypi.org/project/flask_jwtlogin/", "project_urls": { "Download": "https://github.com/AlexPraefectus/flask-jwtlogin/archive/0.1.tar.gz", "Homepage": "https://github.com/AlexPraefectus/flask-jwtlogin" }, "release_url": "https://pypi.org/project/flask_jwtlogin/0.2.1/", "requires_dist": null, "requires_python": "", "summary": "flask extension to handle login users in APIs", "version": "0.2.1" }, "last_serial": 4044106, "releases": { "0.2.1": [ { "comment_text": "", "digests": { "md5": "d161c0cc00e85eb20872cefd9e6af421", "sha256": "f6ab87dee1037772a63ff552a952e1b0aa26962c1e4b7a15088fd6feeb405a55" }, "downloads": -1, "filename": "flask_jwtlogin-0.2.1.tar.gz", "has_sig": false, "md5_digest": "d161c0cc00e85eb20872cefd9e6af421", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4847, "upload_time": "2018-07-09T15:43:09", "url": "https://files.pythonhosted.org/packages/47/d6/b40229eb800788953a33b563387aa8e42f2b646b6780ca0a095f8e8bf063/flask_jwtlogin-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d161c0cc00e85eb20872cefd9e6af421", "sha256": "f6ab87dee1037772a63ff552a952e1b0aa26962c1e4b7a15088fd6feeb405a55" }, "downloads": -1, "filename": "flask_jwtlogin-0.2.1.tar.gz", "has_sig": false, "md5_digest": "d161c0cc00e85eb20872cefd9e6af421", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4847, "upload_time": "2018-07-09T15:43:09", "url": "https://files.pythonhosted.org/packages/47/d6/b40229eb800788953a33b563387aa8e42f2b646b6780ca0a095f8e8bf063/flask_jwtlogin-0.2.1.tar.gz" } ] }