{ "info": { "author": "Rodrigo Cacilhas", "author_email": "rodrigo.cacilhas@myfreecomm.com.br", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": ".. _Flask: http://flask.pocoo.org/docs/\n .. _PassaporteWeb: https://app.passaporteweb.com.br/\n \n ====================\n Flask-IdentityClient\n ====================\n \n API de conex\u00e3o com PassaporteWeb_ para aplica\u00e7\u00f5es Flask_.\n \n \n Configura\u00e7\u00f5es\n -------------\n \n Os *settings* do Flask precisam conter as seguntes chaves:\n \n - ``PASSAPORTE_WEB``: dicion\u00e1rio contendo as chaves:\n \n - ``HOST``: prefixo do PassaporteWeb, incluindo protocolo. Ex.:\n ``https://app.passaporteweb.com.br``.\n \n - ``FETCH_USER_DATA_PATH``: *path* da URL de captura de dados do\n usu\u00e1rio. Ex.: ``/sso/fetchuserdata/``.\n \n - ``REQUEST_TOKEN_PATH``: *path* da URL para inicializa\u00e7\u00e3o da\n requisi\u00e7\u00e3o de *token*. Ex.: ``/sso/initiate/``.\n \n - ``ACCESS_TOKEN_PATH``: *path* da URL de troca de *token*. Ex.:\n ``/sso/token/``.\n \n - ``AUTHORIZATION_PATH``: *path* da URL de autoriza\u00e7\u00e3o. Ex.:\n ``/sso/authorize/``.\n \n - ``SCOPE``: escopo OAuth, padr\u00e3o: ``auth:api``.\n \n - ``CONSUMER_TOKEN`` e ``CONSUMER_SECRET``: credenciais de autentica\u00e7\u00e3o\n do consumidor.\n \n - ``ECOMMERCE_URL`` (opcional): URL da aplica\u00e7\u00e3o no Ecommerce.\n \n \n Sinais\n ------\n \n Flask-IdentityClient oferece o sinal\n ``flask_identity_client.signal.update_service_account``, que precisa ser\n conectado a um *handler* com assinatura ``(sender, user_data)`` para\n efetuar as atualiza\u00e7\u00f5es do *model* equivalente a ``ServiceAccount`` do\n PassaporteWeb.\n \n A lista de contas do usu\u00e1rio enviada pelo PassaporteWeb encontra-se na\n chave ``accounts`` de ``user_data`` e pode ser modificada. Um lista com\n os UUIDs das contas que permanecerem na chave ap\u00f3s processamento dos\n *handlers* ser\u00e1 adicionada \u00e0 chave ``accounts`` do dicion\u00e1rio\n ``user_data`` na sess\u00e3o, que cont\u00e9m outras chaves importantes, como\n ``uuid``, ``email``, ``first_name``, ``last_name`` e ``full_name`` do\n usu\u00e1rio (*identity*) autenticado.\n \n \n *Blueprint*\n -----------\n \n O *blueprint* do Flask-IdentityClient pode ser encontrado em\n ``flask_identity_client.application`` e \u00e9 chamado ``blueprint``.\n \n Voc\u00ea pode registr\u00e1-lo::\n \n from flask_identity_client.application import blueprint\n app.register_blueprint(blueprint, url_prefix='/sso')\n \n \n Autentica\u00e7\u00e3o de usu\u00e1rio\n -----------------------\n \n Para registrar um outro *blueprint* para requerer usu\u00e1rio, voc\u00ea deve\n usar::\n \n from flask_identity_client.startup_funcs import user_required\n \n # blueprint aqui \u00e9 o blueprint alvo, n\u00e3o flask_identity_client!\n blueprint.before_request(user_required)\n \n \n Obtendo recursos de um servi\u00e7o atravessador\n -------------------------------------------\n \n \u00c9 poss\u00edvel obter recursos de um servi\u00e7o atravessador atrav\u00e9s do *factory*\n de fun\u00e7\u00f5es *startup* ``flask_identity_client.startup_funcs.resources_from_middle``.\n \n O *factory* recebe como par\u00e2metro a chave do dicion\u00e1rio de configura\u00e7\u00f5es\n no *config* da aplica\u00e7\u00e3o. O dicion\u00e1rio deve ter as seguintes informa\u00e7\u00f5es:\n \n - ``TOKEN``: *token* de acesso ao servi\u00e7o atravessador.\n \n - ``SECRET``: chave secreta associada ao *token*.\n \n - ``HOST``: servi\u00e7o atravessador, incluindo o protocolo (``http://`` ou\n ``https://``).\n \n - ``PATH``: caminha na API do servi\u00e7o atravessador que retorna os recursos.\n \n \n O resultado \u00e9 armazenado na sess\u00e3o, referenciado pela chave ``resources``.\n Caso ocorra algum erro, a chave existir\u00e1, mas o valor ser\u00e1 ``None``.\n \n O objeto de recursos na chave ``resources`` da sess\u00e3o possui os seguintes\n atributos:\n \n - ``data``: dados recebidos.\n \n - ``etag``: ETag da resposta, usado nas requisi\u00e7\u00f5es seguintes.\n \n - ``expires``: data de expira\u00e7\u00e3o da resposta da requisi\u00e7\u00e3o em formato\n Posix, usado para evitar requisi\u00e7\u00f5es m\u00faltiplas.\n \n Observa\u00e7\u00e3o: \u00e9 preciso estar logado no PassaporteWeb, pois o servi\u00e7o\n atravessador receber\u00e1 os mesmos dados do *login*. Caso os dados de\n *login* estejam desatualizados ou o usu\u00e1rio n\u00e3o esteja logado, o valor\n de ``resources`` ser\u00e1 ``werkzeug.exceptions.Unauthorized`` (a exce\u00e7\u00e3o\n **n\u00e3o** ser\u00e1 levantada), delegando para a aplica\u00e7\u00e3o a responsabilidade\n sobre como lidar com isso.\n \n A sugest\u00e3o \u00e9 redirecionar o cliente para o processo de *login*::\n \n if session['resources'] is Unauthorized:\n session.clear()\n return redirect(url_for('identity_client.login', next=request.url))\n \n \n CHANGELOG\n =========\n \n At\u00e9 vers\u00e3o 0.4.2, a atualiza\u00e7\u00e3o era realizada passando para a biblioteca\n o caminho para encontrar o *model* ``ServiceAccount``, na chave\n ``SERVICE_ACCOUNT`` dos *settings*.\n \n A partir da vers\u00e3o 0.5, Flask-IdentityClient n\u00e3o precisa mais conhecer\n detalhes de implementa\u00e7\u00e3o da aplica\u00e7\u00e3o. Para atualizar a base local,\n basta conectar um *handler* ao sinal\n ``flask_identity_client.signal.update_service_account``, conforme\n descrito acima.\n \n Por\u00e9m, **\u00e9 necess\u00e1rio** atualizar o comportamento das aplica\u00e7\u00f5es\n antigas, que n\u00e3o ser\u00e3o mais compat\u00edveis com as novas vers\u00f5es de\n Flask-IdentityClient.", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/myfreecomm/Flask-IdentityClient/archive/next_release.zip", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/myfreecomm/Flask-IdentityClient", "keywords": null, "license": "Copyright", "maintainer": null, "maintainer_email": null, "name": "Flask-IdentityClient", "package_url": "https://pypi.org/project/Flask-IdentityClient/", "platform": "any", "project_url": "https://pypi.org/project/Flask-IdentityClient/", "project_urls": { "Download": "https://github.com/myfreecomm/Flask-IdentityClient/archive/next_release.zip", "Homepage": "https://github.com/myfreecomm/Flask-IdentityClient" }, "release_url": "https://pypi.org/project/Flask-IdentityClient/0.5.2/", "requires_dist": null, "requires_python": null, "summary": "PassaporteWeb connection for Flask applications", "version": "0.5.2" }, "last_serial": 1014894, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "74cd187ec83d97d70f9adc515bd13aa2", "sha256": "67455382173d16083b23d9887d135433e25285d0db55b04898ee4d177aee269b" }, "downloads": -1, "filename": "Flask-IdentityClient-0.1.tar.gz", "has_sig": false, "md5_digest": "74cd187ec83d97d70f9adc515bd13aa2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4227, "upload_time": "2013-10-14T19:15:10", "url": "https://files.pythonhosted.org/packages/8b/e8/9fe3c1ed1414e719966ed12aafaeee396a8a0044ba581fd3fc204781fb7d/Flask-IdentityClient-0.1.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "19557f5290871e474f0b57b04c06dba7", "sha256": "74e275f60f142220e1cfcee609225af787356af08170fc289f1c93541b632710" }, "downloads": -1, "filename": "Flask-IdentityClient-0.2.1.tar.gz", "has_sig": false, "md5_digest": "19557f5290871e474f0b57b04c06dba7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4163, "upload_time": "2013-10-29T18:40:52", "url": "https://files.pythonhosted.org/packages/e3/bc/7d474a52dd7a73198e434a57120daff5ca396c30edbdd7f9d9199d3e3a79/Flask-IdentityClient-0.2.1.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "5dfa970cb9803b6c78a03278d244950d", "sha256": "6cbf73fa9ac1f0ade709806e20302710d459193f55f6cf8384fd9ab8b3f0544a" }, "downloads": -1, "filename": "Flask-IdentityClient-0.3.tar.gz", "has_sig": false, "md5_digest": "5dfa970cb9803b6c78a03278d244950d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5214, "upload_time": "2013-10-30T13:11:04", "url": "https://files.pythonhosted.org/packages/0e/e2/c62b7ea1f473e4747e3a4235e5fe50ded4a298ff87b5e1124638f40da389/Flask-IdentityClient-0.3.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "bac77d4c83187c1664a477ad3135051f", "sha256": "b97ccddaced59179dd8544a2f9140ab5f77cbe697a847dc65b4d5b7d4e8957a3" }, "downloads": -1, "filename": "Flask-IdentityClient-0.4.1.tar.gz", "has_sig": false, "md5_digest": "bac77d4c83187c1664a477ad3135051f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5697, "upload_time": "2013-10-30T15:08:26", "url": "https://files.pythonhosted.org/packages/40/22/8968948e6fc84738c1eaf1074e9e8284acae8319bfb90a5ecc2f9ff8417b/Flask-IdentityClient-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "b847fef8f6123f0f69d61ce721bafcdd", "sha256": "061b790950eae38938cd4c88e6db3d5b9ea3fc857513b171721025bae8386fab" }, "downloads": -1, "filename": "Flask-IdentityClient-0.4.2.tar.gz", "has_sig": false, "md5_digest": "b847fef8f6123f0f69d61ce721bafcdd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5964, "upload_time": "2013-10-31T17:50:41", "url": "https://files.pythonhosted.org/packages/49/0a/96f504445d57140e8c5ff99d59aef26ea7bb4fccc574e47a6d9ca1f5d2e7/Flask-IdentityClient-0.4.2.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "3e01b82032252f69dcc56991c0fb11b2", "sha256": "d9de520ddc866fcc676d7f48e97c3f52c799b5c5dcb860ed107305c70a336aff" }, "downloads": -1, "filename": "Flask-IdentityClient-0.5.1.tar.gz", "has_sig": false, "md5_digest": "3e01b82032252f69dcc56991c0fb11b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6518, "upload_time": "2014-02-27T19:37:51", "url": "https://files.pythonhosted.org/packages/09/65/051387939481691cd8feac21119aa7230cb46e8f0abd259b7276e3d15cc4/Flask-IdentityClient-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "7544c46475a43e88b2a06ff0e2b844f7", "sha256": "843e9286207d8b8f347f90c021dc9da0506ed93c6b67531e0073bb2b9c8c6b74" }, "downloads": -1, "filename": "Flask-IdentityClient-0.5.2.tar.gz", "has_sig": false, "md5_digest": "7544c46475a43e88b2a06ff0e2b844f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6508, "upload_time": "2014-02-28T12:53:59", "url": "https://files.pythonhosted.org/packages/98/a3/0d8442c76674e8fa348bd9dbbf11ba0747c5a1789e9b7d04840cfe5a3874/Flask-IdentityClient-0.5.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7544c46475a43e88b2a06ff0e2b844f7", "sha256": "843e9286207d8b8f347f90c021dc9da0506ed93c6b67531e0073bb2b9c8c6b74" }, "downloads": -1, "filename": "Flask-IdentityClient-0.5.2.tar.gz", "has_sig": false, "md5_digest": "7544c46475a43e88b2a06ff0e2b844f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6508, "upload_time": "2014-02-28T12:53:59", "url": "https://files.pythonhosted.org/packages/98/a3/0d8442c76674e8fa348bd9dbbf11ba0747c5a1789e9b7d04840cfe5a3874/Flask-IdentityClient-0.5.2.tar.gz" } ] }