pas.plugins.authomatic


Namepas.plugins.authomatic JSON
Version 1.2.0 PyPI version JSON
download
home_pagehttps://github.com/collective/pas.plugins.authomatic
SummaryProvides OAuth2/OpenID login for Plone using Authomatic.
upload_time2023-09-13 14:47:19
maintainer
docs_urlNone
authorJens Klein, Matthias Dollfuss, and Érico Andrei
requires_python>=3.7
licenseGPL
keywords python plone pas oauth authentication
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            
<div align="center"><img alt="logo" src="https://raw.githubusercontent.com/collective/pas.plugins.authomatic/main/docs/authomatic.svg" width="70" /></div>

<h1 align="center">OAuth2 / OpenId Authentication in Plone</h1>

<div align="center">

[![PyPI](https://img.shields.io/pypi/v/pas.plugins.authomatic)](https://pypi.org/project/pas.plugins.authomatic/)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pas.plugins.authomatic)](https://pypi.org/project/pas.plugins.authomatic/)
[![PyPI - Wheel](https://img.shields.io/pypi/wheel/pas.plugins.authomatic)](https://pypi.org/project/pas.plugins.authomatic/)
[![PyPI - License](https://img.shields.io/pypi/l/pas.plugins.authomatic)](https://pypi.org/project/pas.plugins.authomatic/)
[![PyPI - Status](https://img.shields.io/pypi/status/pas.plugins.authomatic)](https://pypi.org/project/pas.plugins.authomatic/)


[![PyPI - Plone Versions](https://img.shields.io/pypi/frameworkversions/plone/pas.plugins.authomatic)](https://pypi.org/project/pas.plugins.authomatic/)

[![Code analysis checks](https://github.com/collective/pas.plugins.authomatic/actions/workflows/code-analysis.yml/badge.svg)](https://github.com/collective/pas.plugins.authomatic/actions/workflows/code-analysis.yml)
[![Tests](https://github.com/collective/pas.plugins.authomatic/actions/workflows/tests.yaml/badge.svg)](https://github.com/collective/pas.plugins.authomatic/actions/workflows/tests.yaml)
![Code Style](https://img.shields.io/badge/Code%20Style-Black-000000)

[![GitHub contributors](https://img.shields.io/github/contributors/collective/pas.plugins.authomatic)](https://github.com/collective/pas.plugins.authomatic)
[![GitHub Repo stars](https://img.shields.io/github/stars/collective/pas.plugins.authomatic?style=social)](https://github.com/collective/pas.plugins.authomatic)

</div>

Features
--------

**pas.plugins.authomatic** provides OAuth2 and OpenID login capability for Plone sites by integrating the awesome [Authomatic](https://authomatic.github.io/authomatic/) package.

```
Authomatic is a framework agnostic library
for Python web applications
with a minimalistic but powerful interface
which simplifies authentication of users
by third party providers like Facebook or Twitter
through standards like OAuth and OpenID.
```
*by author Peter Hudec on Authomatic website*


Supported Providers
-------------------

Out of the box,  **pas.plugins.authomatic** supports the following providers

*OAuth 1.0a*

- Bitbucket
- Flickr
- Meetup
- Plurk
- Twitter
- Tumblr
- UbuntuOne
- Vimeo
- Xero
- Xing
- Yahoo

*OAuth 2.0*

- Amazon
- Behance
- Bitly
- Cosm
- DeviantART
- Eventbrite
- Facebook
- Foursquare
- GitHub
- Google
- LinkedIn
- PayPal
- Reddit
- Viadeo
- VK
- WindowsLive
- Yammer
- Yandex

*OpenID*

- python-openid
- Google App Engine based OpenID.


Documentation
-------------

This package supports Plone sites using Volto or the Classic UI.

For the Classic UI:

- This package creates a view called `authomatic-handler` where you can login with different providers.
- The view can be used as well to add an identity from a provider to an existing account.
- The provider is choosen in the URL so if you call `/authomatic-handler/PROVIDER` you will use PROVIDER to login.

For Volto:

- Endpoint `@login` with GET: Returns list of authentication options
- Endpoint `@login-authomatic` with GET: Provide information to start the OAuth process.
- Endpoint `@login-authomatic` with POST: Handles OAuth login and returns a JSON web token (JWT).
- For Volto sites you must also install [@plone-collective/volto-authomatic](https://github.com/collective/volto-authomatic).


Configuration is, currently, done via Classic UI:

- Plugin configuration is available in the Controlpanel `@@authomatic-controlpanel` (linked under users)
- Example JSON configuration (first level key is the PROVIDER):

```json
{
  "github": {
    "display": {
      "title": "Github",
      "cssclasses": {
          "button": "plone-btn plone-btn-default",
          "icon": "glypicon glyphicon-github"
      },
      "as_form": false
    },
    "propertymap": {
      "email": "email",
      "link": "home_page",
      "location": "location",
      "name": "fullname"
    },
    "class_": "authomatic.providers.oauth2.GitHub",
    "consumer_key": "5c4901d141e736f114a7",
    "consumer_secret": "d4692ca3c0ab6cc1f8b28d3ccb1ea15b61e7ef5c",
    "access_headers": {
      "User-Agent": "Plone Authomatic Plugin"
    }
  },
}
```

Installation
------------

Add **pas.plugins.authomatic** to the Plone installation using `pip`:

```bash
pip install pas.plugins.authomatic
```
or add it as a dependency on your package's `setup.py`

```python
    install_requires = [
        "pas.plugins.authomatic",
        "Products.CMFPlone",
        "plone.restapi",
        "setuptools",
    ],
```

Start Plone and activate the plugin in the addons control-panel.

Configuration
-------------

Using Classic UI, go to the `Authomatic` controlpanel.

<img alt="Screenshot" src="https://raw.githubusercontent.com/collective/pas.plugins.authomatic/main/docs/plone-control-panel.png" width="300" />

Configuration parameters for the different authorization are provided as JSON text in there. We use JSON because of its flexibility.

<img alt="Screenshot" src="https://raw.githubusercontent.com/collective/pas.plugins.authomatic/main/docs/plugin-settings.png" width="300" />

Details about the configuration of each provider can be found at [Authomatic provider section](https://authomatic.github.io/authomatic/reference/providers.html).

There are some differences in configuration:

- Value of `"class_"` has to be a string, which is then resolved as a dotted path.
- Each provider can get an optional entry `display` with sub-enties such as:

  - `title` which is used in the templates instead of the section name.
  - `iconclasses` which is applied in the templates to an span.
  - `buttonclasses` which is applied in the templates to the button.
  - `as_form` (true/false) which renders a form for OpenId providers.

- Each provider can get an optional entry `propertymap`.
  It is a mapping from authomatic/provider user properties to plone user properties, like `"fullname": "name",`. Look at each providers documentation which properties are available.


Source Code and Contributions
-----------------------------

If you want to help with the development (improvement, update, bug-fixing, ...) of `pas.plugins.authomatic` this is a great idea!

- [Issue Tracker](https://github.com/collective/pas.plugins.authomatic/issues)
- [Source Code](https://github.com/collective/pas.plugins.authomatic/)


Please do larger changes on a branch and submit a Pull Request.

Creator of **pas.plugins.authomatic** is Jens Klein.

We appreciate any contribution and if a release is needed to be done on PyPI, please just contact one of us.

Development
-----------

You need a working `python` environment (system, virtualenv, pyenv, etc) version 3.7 or superior.

Then install the dependencies and a development instance using:

```bash
make build
```

To run tests for this package:

```bash
make test
```

By default we use the latest Plone version in the 6.x series.

License
-------

The project is licensed under the GPLv2.


# Changelog

## 1.2.0 (2023-09-13)

- Add Spanish translation. @macagua

- Better handle values from identity data. @cekk

- Add `username_userid` User ID factory. @ericof

- Annotate transaction in POST calls to authenticate a user. @ericof


## 1.1.2 (2023-03-15)

- Support Python 3.11 for Plone 6. @ericof

- Lint fixes @ericof


## 1.1.1 (2022-10-14)

- Upgrade plone/code-analysis-action to version 2. @ericof

- Fix packaging issue related to CHANGELOG.md not being included in the source package. @ericof

- Support Python 3.10 for Plone 6. @ericof


## 1.1.0 (2022-10-10)

- Add the plone.restapi adapter to show the controlpanel in Volto. @erral

- Add possibility to redirect to `next_url` via provided cookie @avoinea


## 1.0.0 (2022-07-25)

- Use plone/plone-setup GitHub Action. @ericof

- Add Brazilian Portuguese translation. @ericof

- Use plone/code-analysis-action GitHub Action for code analysis. @ericof

- Fix doChangeUser takes 2 positional arguments but 3 were given @avoinea

## 1.0b2 (2021-08-18)

- Fix tox setup, move CI from TravisCI to GitHub Actions. @jensens

- Code Style Black, Isort, zpretty and Pyupgrade applied. @jensens

- Add missing no-op methods for IUserManagement to plugin.
  This fixes the tests. @jensens

- Drop Python 2 support and so require Plone 5.2. @jensens

- Include permissions from CMFCore to avoid ComponentLookupError. @bsuttor

- Fixed ModuleNotFoundError: No module named 'App.class_init' on Zope 5. @bsuttor

- Add french translation @mpeeters

- PAS event notification IPrincipalCreatedEvent. @jensens

- Python 3 and Plone 52 compatibility. @cekk

- Fix #44: Fullfill strictly exact_match when enumerating users @allusa

- Allow users deletion. @cekk

- Drop Plone < 5.1.x compatibility. @cekk

- Fix #54: Notification of PrincipalCreated event. @ericof

- Closes #55: Support plone.restapi. @ericof

## 1.0b1 (2017-11-20)

- Slighly beautify login modal. @jensens

- Fix #33" Page does not exist Control Settings. @jensens

- Fix #31: Link is broken to JSON configuration documentation in help text. @jensens

- Fix #28: After uninstall plone.external_login_url is still registered and the login broken. @jensens

- Support for Plone 5.1 tested (worked, ust control-panel icon needed some tweak).
  Buildout configuration for 5.1 added. @jensens

- Install: Hide non-valid profiles at install form. @jensens

- Additional checks to ensure to never have an empty/None key stored. @jensens

- Fix #27: Update user data after login. @jensens

- Fix filter users bug in enumerateUsers plugin where it was always returning
  all the users. @sneridagh

- fix typo and wording of login message @tkimnguyen


## 1.0a7 (2016-02-15)

- Workaround for None users. @sneridagh


## 1.0a6 (2016-01-11)

- Fix #21: When you logout and then login again, a new user is created. @jensens


## 1.0a5 (2015-12-04)

- Fix: #18 "Provider Login" option for "Generator for Plone User ID" seems
  broken @jensens

- Fix: Title indicates if an identity is added @jensens

- Fix: Correct usage of plone.protect @jensens


## 1.0a4 (2015-11-20)

- Added german translation @jensens

- Restored Plone 4 compatibility @keul

- Added italian translation @keul

- Proper uninstall @keul

## 1.0a3 (2015-11-15)

- Refactor authomatic-handler to enable adding identities. @jensens

- Fix: use secret from settings as secret for Authomatic. @jensens

- Renamed view ``authomatic-login`` to ``authomatic-handler``, because this
  view will be used to add an identity too (url must be registered on provider
  side sometimes and we want to do this only once). @jensens


## 1.0a2 (2015-11-14)

- Minimal validation of JSON. @jensens

- Make the whole ``remember`` procedure a ``safeWrite`` if called from login
  view. We can not pass a authenticator token here, because of redirects and
  expected return urls . @jensens

- Allow selection of user id generator strategy. @jensens

- Allow multiple services for one user. This changes a lot behind the scenes. @jensens

- Use authomatic.core.User attributes instead of raw provider data. closes [#9](https://github.com/collective/pas.plugins.authomatic/issues/9) @ericof


## 1.0a1 (2015-10-28)

- Initial release.



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/collective/pas.plugins.authomatic",
    "name": "pas.plugins.authomatic",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "Python Plone PAS OAuth Authentication",
    "author": "Jens Klein, Matthias Dollfuss, and \u00c9rico Andrei",
    "author_email": "dev@bluedynamics.com",
    "download_url": "https://files.pythonhosted.org/packages/00/54/ab06f5060a39bdd0249bf39528cd363a17f1a8f3441dea9508edf6947d4b/pas.plugins.authomatic-1.2.0.tar.gz",
    "platform": null,
    "description": "\n<div align=\"center\"><img alt=\"logo\" src=\"https://raw.githubusercontent.com/collective/pas.plugins.authomatic/main/docs/authomatic.svg\" width=\"70\" /></div>\n\n<h1 align=\"center\">OAuth2 / OpenId Authentication in Plone</h1>\n\n<div align=\"center\">\n\n[![PyPI](https://img.shields.io/pypi/v/pas.plugins.authomatic)](https://pypi.org/project/pas.plugins.authomatic/)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pas.plugins.authomatic)](https://pypi.org/project/pas.plugins.authomatic/)\n[![PyPI - Wheel](https://img.shields.io/pypi/wheel/pas.plugins.authomatic)](https://pypi.org/project/pas.plugins.authomatic/)\n[![PyPI - License](https://img.shields.io/pypi/l/pas.plugins.authomatic)](https://pypi.org/project/pas.plugins.authomatic/)\n[![PyPI - Status](https://img.shields.io/pypi/status/pas.plugins.authomatic)](https://pypi.org/project/pas.plugins.authomatic/)\n\n\n[![PyPI - Plone Versions](https://img.shields.io/pypi/frameworkversions/plone/pas.plugins.authomatic)](https://pypi.org/project/pas.plugins.authomatic/)\n\n[![Code analysis checks](https://github.com/collective/pas.plugins.authomatic/actions/workflows/code-analysis.yml/badge.svg)](https://github.com/collective/pas.plugins.authomatic/actions/workflows/code-analysis.yml)\n[![Tests](https://github.com/collective/pas.plugins.authomatic/actions/workflows/tests.yaml/badge.svg)](https://github.com/collective/pas.plugins.authomatic/actions/workflows/tests.yaml)\n![Code Style](https://img.shields.io/badge/Code%20Style-Black-000000)\n\n[![GitHub contributors](https://img.shields.io/github/contributors/collective/pas.plugins.authomatic)](https://github.com/collective/pas.plugins.authomatic)\n[![GitHub Repo stars](https://img.shields.io/github/stars/collective/pas.plugins.authomatic?style=social)](https://github.com/collective/pas.plugins.authomatic)\n\n</div>\n\nFeatures\n--------\n\n**pas.plugins.authomatic** provides OAuth2 and OpenID login capability for Plone sites by integrating the awesome [Authomatic](https://authomatic.github.io/authomatic/) package.\n\n```\nAuthomatic is a framework agnostic library\nfor Python web applications\nwith a minimalistic but powerful interface\nwhich simplifies authentication of users\nby third party providers like Facebook or Twitter\nthrough standards like OAuth and OpenID.\n```\n*by author Peter Hudec on Authomatic website*\n\n\nSupported Providers\n-------------------\n\nOut of the box,  **pas.plugins.authomatic** supports the following providers\n\n*OAuth 1.0a*\n\n- Bitbucket\n- Flickr\n- Meetup\n- Plurk\n- Twitter\n- Tumblr\n- UbuntuOne\n- Vimeo\n- Xero\n- Xing\n- Yahoo\n\n*OAuth 2.0*\n\n- Amazon\n- Behance\n- Bitly\n- Cosm\n- DeviantART\n- Eventbrite\n- Facebook\n- Foursquare\n- GitHub\n- Google\n- LinkedIn\n- PayPal\n- Reddit\n- Viadeo\n- VK\n- WindowsLive\n- Yammer\n- Yandex\n\n*OpenID*\n\n- python-openid\n- Google App Engine based OpenID.\n\n\nDocumentation\n-------------\n\nThis package supports Plone sites using Volto or the Classic UI.\n\nFor the Classic UI:\n\n- This package creates a view called `authomatic-handler` where you can login with different providers.\n- The view can be used as well to add an identity from a provider to an existing account.\n- The provider is choosen in the URL so if you call `/authomatic-handler/PROVIDER` you will use PROVIDER to login.\n\nFor Volto:\n\n- Endpoint `@login` with GET: Returns list of authentication options\n- Endpoint `@login-authomatic` with GET: Provide information to start the OAuth process.\n- Endpoint `@login-authomatic` with POST: Handles OAuth login and returns a JSON web token (JWT).\n- For Volto sites you must also install [@plone-collective/volto-authomatic](https://github.com/collective/volto-authomatic).\n\n\nConfiguration is, currently, done via Classic UI:\n\n- Plugin configuration is available in the Controlpanel `@@authomatic-controlpanel` (linked under users)\n- Example JSON configuration (first level key is the PROVIDER):\n\n```json\n{\n  \"github\": {\n    \"display\": {\n      \"title\": \"Github\",\n      \"cssclasses\": {\n          \"button\": \"plone-btn plone-btn-default\",\n          \"icon\": \"glypicon glyphicon-github\"\n      },\n      \"as_form\": false\n    },\n    \"propertymap\": {\n      \"email\": \"email\",\n      \"link\": \"home_page\",\n      \"location\": \"location\",\n      \"name\": \"fullname\"\n    },\n    \"class_\": \"authomatic.providers.oauth2.GitHub\",\n    \"consumer_key\": \"5c4901d141e736f114a7\",\n    \"consumer_secret\": \"d4692ca3c0ab6cc1f8b28d3ccb1ea15b61e7ef5c\",\n    \"access_headers\": {\n      \"User-Agent\": \"Plone Authomatic Plugin\"\n    }\n  },\n}\n```\n\nInstallation\n------------\n\nAdd **pas.plugins.authomatic** to the Plone installation using `pip`:\n\n```bash\npip install pas.plugins.authomatic\n```\nor add it as a dependency on your package's `setup.py`\n\n```python\n    install_requires = [\n        \"pas.plugins.authomatic\",\n        \"Products.CMFPlone\",\n        \"plone.restapi\",\n        \"setuptools\",\n    ],\n```\n\nStart Plone and activate the plugin in the addons control-panel.\n\nConfiguration\n-------------\n\nUsing Classic UI, go to the `Authomatic` controlpanel.\n\n<img alt=\"Screenshot\" src=\"https://raw.githubusercontent.com/collective/pas.plugins.authomatic/main/docs/plone-control-panel.png\" width=\"300\" />\n\nConfiguration parameters for the different authorization are provided as JSON text in there. We use JSON because of its flexibility.\n\n<img alt=\"Screenshot\" src=\"https://raw.githubusercontent.com/collective/pas.plugins.authomatic/main/docs/plugin-settings.png\" width=\"300\" />\n\nDetails about the configuration of each provider can be found at [Authomatic provider section](https://authomatic.github.io/authomatic/reference/providers.html).\n\nThere are some differences in configuration:\n\n- Value of `\"class_\"` has to be a string, which is then resolved as a dotted path.\n- Each provider can get an optional entry `display` with sub-enties such as:\n\n  - `title` which is used in the templates instead of the section name.\n  - `iconclasses` which is applied in the templates to an span.\n  - `buttonclasses` which is applied in the templates to the button.\n  - `as_form` (true/false) which renders a form for OpenId providers.\n\n- Each provider can get an optional entry `propertymap`.\n  It is a mapping from authomatic/provider user properties to plone user properties, like `\"fullname\": \"name\",`. Look at each providers documentation which properties are available.\n\n\nSource Code and Contributions\n-----------------------------\n\nIf you want to help with the development (improvement, update, bug-fixing, ...) of `pas.plugins.authomatic` this is a great idea!\n\n- [Issue Tracker](https://github.com/collective/pas.plugins.authomatic/issues)\n- [Source Code](https://github.com/collective/pas.plugins.authomatic/)\n\n\nPlease do larger changes on a branch and submit a Pull Request.\n\nCreator of **pas.plugins.authomatic** is Jens Klein.\n\nWe appreciate any contribution and if a release is needed to be done on PyPI, please just contact one of us.\n\nDevelopment\n-----------\n\nYou need a working `python` environment (system, virtualenv, pyenv, etc) version 3.7 or superior.\n\nThen install the dependencies and a development instance using:\n\n```bash\nmake build\n```\n\nTo run tests for this package:\n\n```bash\nmake test\n```\n\nBy default we use the latest Plone version in the 6.x series.\n\nLicense\n-------\n\nThe project is licensed under the GPLv2.\n\n\n# Changelog\n\n## 1.2.0 (2023-09-13)\n\n- Add Spanish translation. @macagua\n\n- Better handle values from identity data. @cekk\n\n- Add `username_userid` User ID factory. @ericof\n\n- Annotate transaction in POST calls to authenticate a user. @ericof\n\n\n## 1.1.2 (2023-03-15)\n\n- Support Python 3.11 for Plone 6. @ericof\n\n- Lint fixes @ericof\n\n\n## 1.1.1 (2022-10-14)\n\n- Upgrade plone/code-analysis-action to version 2. @ericof\n\n- Fix packaging issue related to CHANGELOG.md not being included in the source package. @ericof\n\n- Support Python 3.10 for Plone 6. @ericof\n\n\n## 1.1.0 (2022-10-10)\n\n- Add the plone.restapi adapter to show the controlpanel in Volto. @erral\n\n- Add possibility to redirect to `next_url` via provided cookie @avoinea\n\n\n## 1.0.0 (2022-07-25)\n\n- Use plone/plone-setup GitHub Action. @ericof\n\n- Add Brazilian Portuguese translation. @ericof\n\n- Use plone/code-analysis-action GitHub Action for code analysis. @ericof\n\n- Fix doChangeUser takes 2 positional arguments but 3 were given @avoinea\n\n## 1.0b2 (2021-08-18)\n\n- Fix tox setup, move CI from TravisCI to GitHub Actions. @jensens\n\n- Code Style Black, Isort, zpretty and Pyupgrade applied. @jensens\n\n- Add missing no-op methods for IUserManagement to plugin.\n  This fixes the tests. @jensens\n\n- Drop Python 2 support and so require Plone 5.2. @jensens\n\n- Include permissions from CMFCore to avoid ComponentLookupError. @bsuttor\n\n- Fixed ModuleNotFoundError: No module named 'App.class_init' on Zope 5. @bsuttor\n\n- Add french translation @mpeeters\n\n- PAS event notification IPrincipalCreatedEvent. @jensens\n\n- Python 3 and Plone 52 compatibility. @cekk\n\n- Fix #44: Fullfill strictly exact_match when enumerating users @allusa\n\n- Allow users deletion. @cekk\n\n- Drop Plone < 5.1.x compatibility. @cekk\n\n- Fix #54: Notification of PrincipalCreated event. @ericof\n\n- Closes #55: Support plone.restapi. @ericof\n\n## 1.0b1 (2017-11-20)\n\n- Slighly beautify login modal. @jensens\n\n- Fix #33\" Page does not exist Control Settings. @jensens\n\n- Fix #31: Link is broken to JSON configuration documentation in help text. @jensens\n\n- Fix #28: After uninstall plone.external_login_url is still registered and the login broken. @jensens\n\n- Support for Plone 5.1 tested (worked, ust control-panel icon needed some tweak).\n  Buildout configuration for 5.1 added. @jensens\n\n- Install: Hide non-valid profiles at install form. @jensens\n\n- Additional checks to ensure to never have an empty/None key stored. @jensens\n\n- Fix #27: Update user data after login. @jensens\n\n- Fix filter users bug in enumerateUsers plugin where it was always returning\n  all the users. @sneridagh\n\n- fix typo and wording of login message @tkimnguyen\n\n\n## 1.0a7 (2016-02-15)\n\n- Workaround for None users. @sneridagh\n\n\n## 1.0a6 (2016-01-11)\n\n- Fix #21: When you logout and then login again, a new user is created. @jensens\n\n\n## 1.0a5 (2015-12-04)\n\n- Fix: #18 \"Provider Login\" option for \"Generator for Plone User ID\" seems\n  broken @jensens\n\n- Fix: Title indicates if an identity is added @jensens\n\n- Fix: Correct usage of plone.protect @jensens\n\n\n## 1.0a4 (2015-11-20)\n\n- Added german translation @jensens\n\n- Restored Plone 4 compatibility @keul\n\n- Added italian translation @keul\n\n- Proper uninstall @keul\n\n## 1.0a3 (2015-11-15)\n\n- Refactor authomatic-handler to enable adding identities. @jensens\n\n- Fix: use secret from settings as secret for Authomatic. @jensens\n\n- Renamed view ``authomatic-login`` to ``authomatic-handler``, because this\n  view will be used to add an identity too (url must be registered on provider\n  side sometimes and we want to do this only once). @jensens\n\n\n## 1.0a2 (2015-11-14)\n\n- Minimal validation of JSON. @jensens\n\n- Make the whole ``remember`` procedure a ``safeWrite`` if called from login\n  view. We can not pass a authenticator token here, because of redirects and\n  expected return urls . @jensens\n\n- Allow selection of user id generator strategy. @jensens\n\n- Allow multiple services for one user. This changes a lot behind the scenes. @jensens\n\n- Use authomatic.core.User attributes instead of raw provider data. closes [#9](https://github.com/collective/pas.plugins.authomatic/issues/9) @ericof\n\n\n## 1.0a1 (2015-10-28)\n\n- Initial release.\n\n\n",
    "bugtrack_url": null,
    "license": "GPL",
    "summary": "Provides OAuth2/OpenID login for Plone using Authomatic.",
    "version": "1.2.0",
    "project_urls": {
        "Changelog": "https://github.com/collective/pas.plugins.authomatic/blob/main/CHANGELOG.md",
        "Homepage": "https://github.com/collective/pas.plugins.authomatic",
        "Issues": "https://github.com/collective/pas.plugins.authomatic/issues",
        "Repository": "https://github.com/collective/pas.plugins.authomatic/"
    },
    "split_keywords": [
        "python",
        "plone",
        "pas",
        "oauth",
        "authentication"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "12425d76817b1cf2b7b95f5b0776a0a2185a1a7774130fb6895db2c107e698b5",
                "md5": "6f117b834a0d39c18033f73f56c0f0d6",
                "sha256": "b546cb4496b8ee33f8deb6037c7c9e000d2c8182c04cc768f71a7cb979de7109"
            },
            "downloads": -1,
            "filename": "pas.plugins.authomatic-1.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "6f117b834a0d39c18033f73f56c0f0d6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 69395,
            "upload_time": "2023-09-13T14:47:17",
            "upload_time_iso_8601": "2023-09-13T14:47:17.265992Z",
            "url": "https://files.pythonhosted.org/packages/12/42/5d76817b1cf2b7b95f5b0776a0a2185a1a7774130fb6895db2c107e698b5/pas.plugins.authomatic-1.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0054ab06f5060a39bdd0249bf39528cd363a17f1a8f3441dea9508edf6947d4b",
                "md5": "b7feab61b12cb9481354d5bf69e86956",
                "sha256": "30506e1111c21a5d51942f62b9af3a4007b9f0407f754d2175723374eb75adb0"
            },
            "downloads": -1,
            "filename": "pas.plugins.authomatic-1.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "b7feab61b12cb9481354d5bf69e86956",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 192410,
            "upload_time": "2023-09-13T14:47:19",
            "upload_time_iso_8601": "2023-09-13T14:47:19.548446Z",
            "url": "https://files.pythonhosted.org/packages/00/54/ab06f5060a39bdd0249bf39528cd363a17f1a8f3441dea9508edf6947d4b/pas.plugins.authomatic-1.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-09-13 14:47:19",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "collective",
    "github_project": "pas.plugins.authomatic",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "requirements": [],
    "lcname": "pas.plugins.authomatic"
}
        
Elapsed time: 0.27513s