{ "info": { "author": "Goldmund, Wyldebeast & Wunderliebe", "author_email": "info@gw20e.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Plone", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "===========================\ncollective.smsauthenticator\n===========================\n`Two-step verification `_\nfor Plone 4 with use login codes sent by SMS. This app allows users to enable\nthe two-step verification for their Plone accounts. A mobile phone capable to\nreceive SMS messages is obviously required. Usage of two-step verification is\noptonal, unless site admins have forced it (configurable in app control panel).\nAdmins can white-list the IPs, for which the two-step verification would be\nskipped.\n\nPrerequiresites\n===============\n- Mobile phone which is able to receive SMS messages.\n- Plone 4 (tested with Plone >= 4.3.1)\n\nLimitations\n===========\nNote, that two-step verification works only for Plone users and does not work\nfor Zope users (those added with \"./bin/instance\" adduser command).\n\nUsage\n=====\nCase 1: Enabling the two-step verification\n------------------------------------------\nPre-conditions: User is not logged into the Plone site, does not yet have\ntwo-step verification enabled and has a mobile phone.\n\nFrom any page follow the \"Enable two-step verification\" link in the menu (next\nto \"Log out\").\n\n.. figure:: https://github.com/collective/collective.smsauthenticator/raw/master/docs/_static/01_menu_enable.png\n :align: center\n\nIf you haven't yet filled in your mobile phone number, you will be requested to\ndo so. You will receive immeditely a SMS with confirmation code in.\n\n.. figure:: https://github.com/collective/collective.smsauthenticator/raw/master/docs/_static/02_setup_mobile_number.png\n :align: center\n\nWhen you're done, you get to a page on which you will be requested to enter the\ncode received by SMS.\n\n.. figure:: https://github.com/collective/collective.smsauthenticator/raw/master/docs/_static/03_confirm_mobile_number_and_complete_two_step_verification_setup.png\n :align: center\n\nEnter the secret code shown in the \"Enter the verification code to activate\ntwo-step verification\" field for confirmation and press the \"Verify\" button.\n\nUpon successful confirmation (you should see a message stating that) the\ntwo-step verification is enabled for your account.\n\n.. figure:: https://github.com/collective/collective.smsauthenticator/raw/master/docs/_static/04_enable_two_step_verification_confirmation_message.png\n :align: center\n\nCase 2: Two-step verification\n-----------------------------\nPre-conditions: User is not logged in and has enabled the two-step verification.\n\nWhen you log into the Plone site (just using username and password), you would\nsee an extra screen on which you are asked to provide the login code, sent to\nyour by SMS.\n\n.. figure:: https://github.com/collective/collective.smsauthenticator/raw/master/docs/_static/05_login_code_form.png\n :align: center\n\nYou should then check your phone for the new SMS message and type in the token\nshown into the \"Enter code\" field.\n\nIf token is valid, you would be logged in.\n\nCase 3: Lost mobile phone or phone number\n-----------------------------------------\nPre-conditions: User is not logged in, has enabled the two-step verification.\n\nThere might be cases when you have lost your mobile phone (either really lost\nit or broken accident or somehow lost ownership of your former mobile number).\nFor such cases, you can reset the phone number.\n\nLog into the Plone site (just using username and password), for to see the extra\nscreen on which you are asked to provide the login code, sent to your by SMS\nand follow the link (help text of the \"Enter code\" field). You would then land\non the page where from you can request the mobile number reset.\n\nEnter your username and mobile number in the \"Username\" and \"Mobile number\"\nfields respectively, press the \"Submit\" button. Link for resetting your mobile\nnumber will appear in your mailbox shortly. Having clicked on the link to reset\nthe mobile number, would bring your to a page where you can enter the\nverification code.\n\n.. figure:: https://github.com/collective/collective.smsauthenticator/raw/master/docs/_static/06_request_to_reset_mobile_number.png\n :align: center\n\nYou will receive an SMS with verification code shortly. Enter the code in the\n\"Enter the verification code to activate the two-step verification\" field.\n\n\n.. figure:: https://github.com/collective/collective.smsauthenticator/raw/master/docs/_static/07_confirm_mobile_number_reset.png\n :align: center\n\nUpon successful confirmation (you should see a message stating that) your\nmobile number is reset.\n\n.. figure:: https://github.com/collective/collective.smsauthenticator/raw/master/docs/_static/08_mobile_number_reset_confirmation_message.png\n :align: center\n\nCase 4: Disabling the two-step verification\n-------------------------------------------\nPre-conditions: User is logged in and has enabled the two-step verification.\n\nFrom any page follow the \"Disable two-step verification\" link in the menu (next\nto \"Log out\").\n\n.. figure:: https://github.com/collective/collective.smsauthenticator/raw/master/docs/_static/09_menu_disable.png\n :align: center\n\nAfter which you would get a message.\n\n.. figure:: https://github.com/collective/collective.smsauthenticator/raw/master/docs/_static/10_disable_two_step_verification_confirmation_message.png\n :align: center\n\nInstallation\n============\nBuildout\n--------\n>>> [instance]\n>>> eggs +=\n>>> collective.smsauthenticator\n\n>>> zcml +=\n>>> collective.smsauthenticator\n\nZMI\n---\nZMI -> portal_quickinstaller\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nChoose \"SMS Authenticator Plone\" and install it.\n\nZMI -> acl_users\n~~~~~~~~~~~~~~~~\n1. Choose \"sms_auth (SMS Authenticator plugin (collective.smsauthenticator))\".\n\n2. Make sure the \"Active plugins\" section of \"Authentication\" has the following\n plugins in the given order (\"sms_auth\" should come as first - critical!):\n\n - sms_auth\n - session\n - source_users\n\nConfiguration options\n=====================\nApp control panel can be accessed at\nhttp://your-plone-site.com/@@sms-authenticator-settings\n\nMain\n----\n\n.. figure:: https://github.com/collective/collective.smsauthenticator/raw/master/docs/_static/11_control_panel_tab_main.png\n :align: center\n\nGlobally enabled\n~~~~~~~~~~~~~~~~\nIf checked, two-step verification is globally force-enabled for all site users\nand they no longer have an option to disable it; this applies to all new users\n(just registered accounts) as well.\n\nWhite-listed IP addresses\n~~~~~~~~~~~~~~~~~~~~~~~~~\nList of white-listed IP addresses - one at a line. If user comes from one of\nthose, the two-step verification is skipped even if user has enabled it or\ntwo-step verification is globally enabled.\n\nExtra\n~~~~~\nAdditionals options of the control panel are:\n\n- Enable two-step verification for all users.\n- Disable two-step verification for all users.\n\nTwilio\n------\n\n.. figure:: https://github.com/collective/collective.smsauthenticator/raw/master/docs/_static/12_control_panel_tab_twilio.png\n :align: center\n\nTwilio number\n~~~~~~~~~~~~~\nYour `Twilio `_ AccountSID and AuthToken. Visit your\nTwilio `Account Phone Number\n`_ page and check\nthe `Manage Numbers` section.\n\nTwilio AccountSID and Twilio AuthToken\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nYour `Twilio `_ AccountSID and AuthToken. Visit your\nTwilio `Account Settings `_ page\nand check the `API Credentials` section.\n\nSecurity\n--------\n\n.. figure:: https://github.com/collective/collective.smsauthenticator/raw/master/docs/_static/13_control_panel_tab_security.png\n :align: center\n\nSecret Key\n~~~~~~~~~~\nSite secret key - can be any string. See it as some sort of a password.\n\nToken lifetime\n~~~~~~~~~~~~~~\nLifetime of the login- and the mobile number reset- codes. Defaults to 5\nminutes (300 seconds).\n\nNotes\n=====\nIt's important that SMS Authenticator comes as first in the\nZMI -> acl_users -> Authentication.\n\nTested in combination with the following products:\n\n- The `Products.LoginLockout\n `_.\n `SMSAuthenticator` comes as first, `LoginLockout` as second. All works fine.\n\nDocumentation\n=============\nSee the documentation at:\n\n- http://collectivesmsauthenticator.readthedocs.org/en/latest/\n- http://pythonhosted.org/collective.smsauthenticator/\n\nSupport\n=======\nFor feature requests or bugs, open an issue. For questions, send us an email to\ninfo@gw20e.com.\n\nLicense\n=======\nGPL 2.0\n\nAuthors & Copyright\n===================\nCopyright (C) 2014 `Goldmund, Wyldebeast & Wunderliebe `_.\n\nAuthors are listed in alphabetic order (by name):\n\n- Artur Barseghyan [barseghyanartur]\n- Harald Friessnegger[frisi]\n- Jan Murre [JJM]\n- Rene Jochum [pcdummy]\n- Peter Uittenbroek [puittenbroek]\n\nTODOs and Roadmap\n=================\nSee `TODOS.rst `_\nfile for the list of TODOs.\n\n\nChangelog\n================================================\n\n0.3.5 (unreleased)\n-----------------------------------------------\n\n0.3.4 (2018-03-16)\n-----------------------------------------------\n- Added support for Messagebird SMS gateway provider.\n For now, quite hard-coded, could be made more pluggable. [JJM]\n\n0.3.3 (2017-03-10)\n------------------------------------------------\n- use the correct memberdata property in the login-formcontroller-script.\n (this used to work on a plone 4.3.9 portal, but broke the login process on 4.3.11) [fRiSi]\n\n0.3.2 (2016-05-25)\n------------------------------------------------\n- Set the default value of `enable_two_step_verification` for new users to the registry\n setting `ISMSAuthenticatorSettings.globally_enabled` (see issue #15)\n [pcdummy, fRiSi]\n- Expand the uninstall functionality with proper removal of persisent objects [puittenbroek]\n- Better error logging [puittenbroek]\n- Don't logout user when doing a POST [puittenbroek]\n- Allow admin's to change fields on the user's profile [puittenbroek]\n- Add a whitelist of user's who are excluded from two factor [puittenbroek]\n- Use newer version of Twilio api (=> 5.4.0) so we can see the 'Delivered' status [puittenbroek]\n- pep8 some files [puittenbroek]\n- Only enable two factor for all users if it was actually changed, turned on [puittenbroek]\n- Always sent a (new!) code upon login [puittenbroek]\n\n0.3.1 (2015-02-12)\n------------------------------------------------\n- Clean product uninstall (also the PAS plugin). [barseghyanartur]\n- Soften dependencies.\n\n0.3.0 (2014-10-06)\n------------------------------------------------\n- Make it possible to resend a token in case if the SMS message\n got lost on the way. [barseghyanartur]\n\n0.2.9 (2014-10-03)\n------------------------------------------------\n- Fix: CL adduser fails due to plone.api, but adduser adds as a Zope account,\n which doesn't need the twofactor properties. We shortcut the subscriber if\n it's a Zope account being added. See plone.api docs for issue with 'scripts':\n http://docs.plone.org/external/plone.api/docs/api/exceptions.html#plone.api.exc.CannotGetPortalError\n [puittenbroek]\n\n0.2.8 (2014-07-07)\n------------------------------------------------\n\n- Use source_users IAutheticationPlugin for password check to prevent\n recursive loop [puittenbroek]\n- Better return values, we always return None in our pas plugin [puittenbroek]\n- Add 'enableAutoFocus' forms to enable auto focus [puittenbroek]\n\n0.2.7 (2014-06-20)\n------------------------------------------------\n\n- Direct user to a 'reset email sent' page instead of loginfom [puittenbroek]\n- Improve/change some help texts [puittenbroek]\n\n0.2.6 (2014-06-19)\n------------------------------------------------\n\n- Improved help texts. [barseghyanartur]\n\n0.2.5 (2014-06-18)\n------------------------------------------------\n\n- Adding admin helper views for viewing IPs that users have been using when logging in.\n [barseghyanartur]\n\n0.2.4 (2014-05-08)\n------------------------------------------------\n\n- Increasing number of chars in the SMS token from 6 to 8. [barseghyanartur]\n\n0.2.3 (2014-03-20)\n------------------------------------------------\n\n- Number of fixes and improvements. [barseghyanartur]\n- Fixes in translations. [barseghyanartur]\n\n0.2.2 (2014-03-10)\n------------------------------------------------\n\n- Fixed lost Plone info status message on mobile number (re)set.\n [barseghyanartur]\n\n0.2.1 (2014-03-10)\n------------------------------------------------\n\n- Better success message on mobile number (re)set. [barseghyanartur]\n\n0.2 (2014-03-10)\n------------------------------------------------\n\n- Taking out an extra step with logging in for the first time. Instead, logging it\n the user after the confirmation of the mobile. [barseghyanartur]\n- Having the username filled in setting up the mobile number for the first time, since\n at that point it's already known. [barseghyanartur]\n\n0.1 (2014-02-28)\n------------------------------------------------\n\n- Initial release, with two-step verification, IP white-listing, configurable lifetime for the login\n codes, mobile number recover and app control panel. [barseghyanartur]\n\n", "description_content_type": "", "docs_url": "https://pythonhosted.org/collective.smsauthenticator/", "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/collective/collective.smsauthenticator", "keywords": "sms authenticator", "license": "GPL 2.0", "maintainer": "", "maintainer_email": "", "name": "collective.smsauthenticator", "package_url": "https://pypi.org/project/collective.smsauthenticator/", "platform": "", "project_url": "https://pypi.org/project/collective.smsauthenticator/", "project_urls": { "Homepage": "https://github.com/collective/collective.smsauthenticator" }, "release_url": "https://pypi.org/project/collective.smsauthenticator/0.3.4/", "requires_dist": null, "requires_python": "", "summary": "Two-step verification in Plone 4 using login codes sent by SMS.", "version": "0.3.4" }, "last_serial": 3727761, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "2389b4a6e0475a7fb678739f7aeb4fbb", "sha256": "b4d8e40bda7875421f8a26a7f47855d473626e49000043d6672f9c6562077402" }, "downloads": -1, "filename": "collective.smsauthenticator-0.1.tar.gz", "has_sig": false, "md5_digest": "2389b4a6e0475a7fb678739f7aeb4fbb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41395, "upload_time": "2014-02-28T16:32:30", "url": "https://files.pythonhosted.org/packages/41/01/f27ab6ad8ab3171df96c253a74ccde871499d14f0486988874eee02f687d/collective.smsauthenticator-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "ecf0165e80364f18a9ffcc6cc3d47cf0", "sha256": "b69357fed83d8496fa9b9517ef553ebca8dd2b0d5cdf348afa9d7e5f35f74837" }, "downloads": -1, "filename": "collective.smsauthenticator-0.2.tar.gz", "has_sig": false, "md5_digest": "ecf0165e80364f18a9ffcc6cc3d47cf0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41751, "upload_time": "2014-03-10T10:30:41", "url": "https://files.pythonhosted.org/packages/62/26/a7d462f6231693d6d09ce540ebb27b4503250a379a61d547853bf39e5923/collective.smsauthenticator-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "4ae95777ab868743f4fe533095baea9c", "sha256": "426563569a703087a163a0fa159624d2f5460552fa54ac22e2f4a67100257581" }, "downloads": -1, "filename": "collective.smsauthenticator-0.2.1.tar.gz", "has_sig": false, "md5_digest": "4ae95777ab868743f4fe533095baea9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41933, "upload_time": "2014-03-10T13:01:46", "url": "https://files.pythonhosted.org/packages/48/4e/4129718f21f5a56cb5ee9d5c8cc0b40a3f33d1069fcd6538b289b3a9d545/collective.smsauthenticator-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "ea62766b3cae693373231365e10ebad9", "sha256": "a82cee3459eb89e87a45c765bae322992f8ea60e79738e6e098532e38a32413a" }, "downloads": -1, "filename": "collective.smsauthenticator-0.2.2.tar.gz", "has_sig": false, "md5_digest": "ea62766b3cae693373231365e10ebad9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41970, "upload_time": "2014-03-10T13:50:37", "url": "https://files.pythonhosted.org/packages/c2/67/f2d260723fe0e58477fc5cbf2780e237b7fba3f4d91be2e75c55465ad3db/collective.smsauthenticator-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "a4749ebf8105f5daf33aff0a449fde2c", "sha256": "e1ba243c368642619932d2f551b295561973690e9d3a353d8f29f3dddd8364aa" }, "downloads": -1, "filename": "collective.smsauthenticator-0.2.3.tar.gz", "has_sig": false, "md5_digest": "a4749ebf8105f5daf33aff0a449fde2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37735, "upload_time": "2014-03-20T22:51:02", "url": "https://files.pythonhosted.org/packages/27/24/45212540a5d1446ac9e69655fb917d780d35aa653ab5517d6c4fa9bad16c/collective.smsauthenticator-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "8089337c15d634fb12c5b9c2b708d898", "sha256": "078a8e6b500166a740e9c79b345b13b5877287077acdfe52bbe059f62cb16b68" }, "downloads": -1, "filename": "collective.smsauthenticator-0.2.4.tar.gz", "has_sig": false, "md5_digest": "8089337c15d634fb12c5b9c2b708d898", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38406, "upload_time": "2014-05-08T16:41:07", "url": "https://files.pythonhosted.org/packages/17/38/1c088cc83c7ec1cf1993326fb52b65b62f3db85b1606b843ba71625b5228/collective.smsauthenticator-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "53f363f6d170aade0954dc428c10fb7e", "sha256": "0011fb189f55619b99ab987ea198652a507967e12411ec8fbddc98692af3902c" }, "downloads": -1, "filename": "collective.smsauthenticator-0.2.5.tar.gz", "has_sig": false, "md5_digest": "53f363f6d170aade0954dc428c10fb7e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41991, "upload_time": "2014-06-18T08:54:18", "url": "https://files.pythonhosted.org/packages/1d/34/bfc8f9d1c5eb7a1ea74627539083d3724a9d4d1089b377a4280f8978849a/collective.smsauthenticator-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "a74a1fa78cc47d5d9810aec54d54899c", "sha256": "fa8ea70fcd0e50db03ab70104de2119919f54c5b7b8ce63e20969612df510930" }, "downloads": -1, "filename": "collective.smsauthenticator-0.2.6.tar.gz", "has_sig": false, "md5_digest": "a74a1fa78cc47d5d9810aec54d54899c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42123, "upload_time": "2014-06-19T11:16:58", "url": "https://files.pythonhosted.org/packages/7a/fb/f39c4c7e7f0e775771c0a9ab4f4b1ad6d130ab73232684c7769df1c1e575/collective.smsauthenticator-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "4bc784633b5c80ec8fac6c8c625df319", "sha256": "d0ed8908bbad5e3b9c2089939c5d4c445507c7d8af5abcd0e208e2c1ad4ad2f2" }, "downloads": -1, "filename": "collective.smsauthenticator-0.2.7.zip", "has_sig": false, "md5_digest": "4bc784633b5c80ec8fac6c8c625df319", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 342764, "upload_time": "2014-06-20T07:33:22", "url": "https://files.pythonhosted.org/packages/65/64/5e17aadced4196c6d342d00b47683d9ae075853ef510aaaec6eafd3508a2/collective.smsauthenticator-0.2.7.zip" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "53ab42625c83399ca0de2ce032c62478", "sha256": "7832f5e69542b35d4c5e8871e807aa0b99c649822861018f5902b6225e347100" }, "downloads": -1, "filename": "collective.smsauthenticator-0.2.8.zip", "has_sig": false, "md5_digest": "53ab42625c83399ca0de2ce032c62478", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 343242, "upload_time": "2014-07-07T14:40:28", "url": "https://files.pythonhosted.org/packages/cc/87/d0b174cf09c30280153ae5f2b903dbe0681001d932dfcaadba85205bb883/collective.smsauthenticator-0.2.8.zip" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "e4be9a195f6fec0505d2b285b2b29cb4", "sha256": "c341c45c02dd9896d55d5bf5b5670d7e3c4dbdfebc2899230c94315a972b3bed" }, "downloads": -1, "filename": "collective.smsauthenticator-0.2.9.zip", "has_sig": false, "md5_digest": "e4be9a195f6fec0505d2b285b2b29cb4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 343951, "upload_time": "2014-10-03T09:12:32", "url": "https://files.pythonhosted.org/packages/a9/05/118d3e2d8527168cb139a845625d00e2af4bfdb1fb41fcde668c70f12c94/collective.smsauthenticator-0.2.9.zip" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "a8ac2fc5a58f2e27f0699dd4e89120ec", "sha256": "69618b4e87779d7d0ff3216fbc9c4b83f6be5d010dadd0930d4967f5093e204e" }, "downloads": -1, "filename": "collective.smsauthenticator-0.3.0.tar.gz", "has_sig": false, "md5_digest": "a8ac2fc5a58f2e27f0699dd4e89120ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43854, "upload_time": "2014-10-06T12:46:46", "url": "https://files.pythonhosted.org/packages/db/82/2e6e36a6464e1e3adcd25f540038c672d006ff838f5435b2bf60de28de1e/collective.smsauthenticator-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "b04bda0caa7a9c78d59fa5a6a5ee3b03", "sha256": "1f8a00b91d9ff113e7c71d49f4896576eb487df45bba512800649d65e7a23dfd" }, "downloads": -1, "filename": "collective.smsauthenticator-0.3.1.tar.gz", "has_sig": false, "md5_digest": "b04bda0caa7a9c78d59fa5a6a5ee3b03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45467, "upload_time": "2015-02-12T16:14:53", "url": "https://files.pythonhosted.org/packages/b2/6a/5cc97ca1ad0fbb391ba8b8b5410425c7b3a1f94fb26c23e36b5d16b35640/collective.smsauthenticator-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "1347fe104e8596a15fbf7685a9a12c93", "sha256": "d7c4466be0d79ac529acf2548194c5ae34d51d243c655675b9b16e3d2f32323a" }, "downloads": -1, "filename": "collective.smsauthenticator-0.3.2.zip", "has_sig": false, "md5_digest": "1347fe104e8596a15fbf7685a9a12c93", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 371805, "upload_time": "2016-05-25T14:43:30", "url": "https://files.pythonhosted.org/packages/f9/f2/048fdef69ca7239f308b1914d598be0880448008f8d6745955db53748ef7/collective.smsauthenticator-0.3.2.zip" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "89fdbf034a4f8e5a6912ac74942f0835", "sha256": "917b9e7aee5a17ee01731fe33ad65f4a354558eda7ef403f06930e21da6570ac" }, "downloads": -1, "filename": "collective.smsauthenticator-0.3.3.zip", "has_sig": false, "md5_digest": "89fdbf034a4f8e5a6912ac74942f0835", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 367727, "upload_time": "2017-03-10T13:38:57", "url": "https://files.pythonhosted.org/packages/43/43/af88b0f48949b14eef3e8da1e0fe8c67c7ede5cd32c311680c24d8dfb0af/collective.smsauthenticator-0.3.3.zip" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "5639f96e7d4bf0056757a079e670b45e", "sha256": "75dc3b8d28e1f596d16b7961150412c10c11b1adc70d7d8d1357c86801c0052b" }, "downloads": -1, "filename": "collective.smsauthenticator-0.3.4.tar.gz", "has_sig": false, "md5_digest": "5639f96e7d4bf0056757a079e670b45e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47543, "upload_time": "2018-03-16T19:57:04", "url": "https://files.pythonhosted.org/packages/1f/17/8ac2489881088193bbc6795abd245a9dc34f3c5b739cafd498edce78a2fe/collective.smsauthenticator-0.3.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5639f96e7d4bf0056757a079e670b45e", "sha256": "75dc3b8d28e1f596d16b7961150412c10c11b1adc70d7d8d1357c86801c0052b" }, "downloads": -1, "filename": "collective.smsauthenticator-0.3.4.tar.gz", "has_sig": false, "md5_digest": "5639f96e7d4bf0056757a079e670b45e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47543, "upload_time": "2018-03-16T19:57:04", "url": "https://files.pythonhosted.org/packages/1f/17/8ac2489881088193bbc6795abd245a9dc34f3c5b739cafd498edce78a2fe/collective.smsauthenticator-0.3.4.tar.gz" } ] }