Products.NoDuplicateLogin


NameProducts.NoDuplicateLogin JSON
Version 2.0.1 PyPI version JSON
download
home_page
SummaryProducts.NoDuplicateLogin
upload_time2023-12-07 09:55:31
maintainer
docs_urlNone
authorDaniel Nouri
requires_python
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            Introduction
============

This PAS plugin will reject multiple logins with the same user at the same
time. It ensures that only one browser may be logged with the same userid at
one time.

Implementation
--------------

The implementation works like this: Suppose that Anna and Karl are two people
who share a login annaandkarl in our site. Anna logs in, authenticating for
the first time. We generate a cookie with a unique id for Anna and remember
the id ourselves. For every subsequent authentication (i.e. for every
request), we will make sure that Anna's browser has the cookie.

Now Karl decides to log in into the site with the same login annaandkarl, the
one that Anna uses to surf the site right now. The plugin sees that Karl's
browser doesn't have our cookie yet, so it generates one with a unique id for
Karl's browser, remembers it and forgets about Anna's cookie.

What happens when Anna clicks on a link on the site? The plugin sees that Anna
has our cookie but that it differs from the cookie value that it remembered
(Karl's browser has that cookie value). Anna is logged out but the plugin and
sees the message "Someone else logged in under your name".

.. Warning::

    Because this implementation stores its mappings in the ZODB on attributes
    of the plugin itself, there may be issues with scaling.

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

Add ``Products.NoDuplicateLogin`` to the eggs parameter of your ``plone.recipe.zope2instance``
section::

    [plone]
    recipe = plone.recipe.zope2instance
    eggs =
        Plone
        ...
        Products.NoDuplicateLogin

Now run buildout and restart Plone. Once Plone has started, login and browse
to ``Site Setup -> Zope Management Interface -> acl_users`` and add a ``No Duplicate
Login Plugin`` from the drop down menu in the upper right.

After that, click on the ``No Duplicate Login Plugin`` object in the acl_users
folder listing. For both the ``Authentication`` and ``Reset Credentials``
objects in the ``No Duplicate Login Plugin`` folder listing, click, then move the
``no_duplicate_login`` plugin from the ``Available Plugins`` display widget on the
left to the ``Active Plugins`` display widget on the right using the arrow
buttons in the middle.

Now test! It may also be necessary to "arrow up" the ``no_duplicate_login``
plugin in the ``Active Plugins`` display listing for both ``Authentication``
and ``Reset Credentials``.

If you are using a policy product to install this, you can perform these actions by including an
empty ``noduplicatelogin.xml`` file in your profile directory.

History
-------


2.0.1 (2023-12-04)
~~~~~~~~~~~~~~~~~~

* Packaging bugfix: The plugin can't be added, due to missing add template
  [pigeonflight]


2.0 (2014-11-25)
~~~~~~~~~~~~~~~~

* Security and performance improvements [matthewwilkes]
* Remove reimplementation of plone.session [matthewwilkes]
* Change internal data structures to avoid unnecessary object stores [matthewwilkes]
* Add tests to test harness [matthewwilkes]
* Fix pure Zope compatibility [matthewwilkes]


1.0b1 (25/11/2014)
~~~~~~~~~~~~~~~~~~

* Remove reimplementation of plone.session [matthewwilkes]
* Change internal data structures to avoid unnecessary object stores [matthewwilkes]
* Add tests to test harness [matthewwilkes]
* Fix pure Zope compatibility [matthewwilkes]

1.0a2 (02/18/2011)
~~~~~~~~~~~~~~~~~~

* Add more installation instructions
       
1.0a1 (12/17/2010)
~~~~~~~~~~~~~~~~~~

* Add test harness [aclark]
* Rip out "experimental" session storage, too many ZODB conflicts. [aclark]
* Plone 4 compat [aclark]
* Re-package as egg [aclark]

1.0 svn/dev
~~~~~~~~~~~

* Plone 3 compat [perrito]
* Original implementation [nouri]
            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "Products.NoDuplicateLogin",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "",
    "author": "Daniel Nouri",
    "author_email": "daniel.nouri@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/ee/b2/313582d7dbc343b170cbe7f5a0504d2606318214b1a0081b1d06f56c8249/Products.NoDuplicateLogin-2.0.1.tar.gz",
    "platform": null,
    "description": "Introduction\n============\n\nThis PAS plugin will reject multiple logins with the same user at the same\ntime. It ensures that only one browser may be logged with the same userid at\none time.\n\nImplementation\n--------------\n\nThe implementation works like this: Suppose that Anna and Karl are two people\nwho share a login annaandkarl in our site. Anna logs in, authenticating for\nthe first time. We generate a cookie with a unique id for Anna and remember\nthe id ourselves. For every subsequent authentication (i.e. for every\nrequest), we will make sure that Anna's browser has the cookie.\n\nNow Karl decides to log in into the site with the same login annaandkarl, the\none that Anna uses to surf the site right now. The plugin sees that Karl's\nbrowser doesn't have our cookie yet, so it generates one with a unique id for\nKarl's browser, remembers it and forgets about Anna's cookie.\n\nWhat happens when Anna clicks on a link on the site? The plugin sees that Anna\nhas our cookie but that it differs from the cookie value that it remembered\n(Karl's browser has that cookie value). Anna is logged out but the plugin and\nsees the message \"Someone else logged in under your name\".\n\n.. Warning::\n\n    Because this implementation stores its mappings in the ZODB on attributes\n    of the plugin itself, there may be issues with scaling.\n\nInstallation\n------------\n\nAdd ``Products.NoDuplicateLogin`` to the eggs parameter of your ``plone.recipe.zope2instance``\nsection::\n\n    [plone]\n    recipe = plone.recipe.zope2instance\n    eggs =\n        Plone\n        ...\n        Products.NoDuplicateLogin\n\nNow run buildout and restart Plone. Once Plone has started, login and browse\nto ``Site Setup -> Zope Management Interface -> acl_users`` and add a ``No Duplicate\nLogin Plugin`` from the drop down menu in the upper right.\n\nAfter that, click on the ``No Duplicate Login Plugin`` object in the acl_users\nfolder listing. For both the ``Authentication`` and ``Reset Credentials``\nobjects in the ``No Duplicate Login Plugin`` folder listing, click, then move the\n``no_duplicate_login`` plugin from the ``Available Plugins`` display widget on the\nleft to the ``Active Plugins`` display widget on the right using the arrow\nbuttons in the middle.\n\nNow test! It may also be necessary to \"arrow up\" the ``no_duplicate_login``\nplugin in the ``Active Plugins`` display listing for both ``Authentication``\nand ``Reset Credentials``.\n\nIf you are using a policy product to install this, you can perform these actions by including an\nempty ``noduplicatelogin.xml`` file in your profile directory.\n\nHistory\n-------\n\n\n2.0.1 (2023-12-04)\n~~~~~~~~~~~~~~~~~~\n\n* Packaging bugfix: The plugin can't be added, due to missing add template\n  [pigeonflight]\n\n\n2.0 (2014-11-25)\n~~~~~~~~~~~~~~~~\n\n* Security and performance improvements [matthewwilkes]\n* Remove reimplementation of plone.session [matthewwilkes]\n* Change internal data structures to avoid unnecessary object stores [matthewwilkes]\n* Add tests to test harness [matthewwilkes]\n* Fix pure Zope compatibility [matthewwilkes]\n\n\n1.0b1 (25/11/2014)\n~~~~~~~~~~~~~~~~~~\n\n* Remove reimplementation of plone.session [matthewwilkes]\n* Change internal data structures to avoid unnecessary object stores [matthewwilkes]\n* Add tests to test harness [matthewwilkes]\n* Fix pure Zope compatibility [matthewwilkes]\n\n1.0a2 (02/18/2011)\n~~~~~~~~~~~~~~~~~~\n\n* Add more installation instructions\n       \n1.0a1 (12/17/2010)\n~~~~~~~~~~~~~~~~~~\n\n* Add test harness [aclark]\n* Rip out \"experimental\" session storage, too many ZODB conflicts. [aclark]\n* Plone 4 compat [aclark]\n* Re-package as egg [aclark]\n\n1.0 svn/dev\n~~~~~~~~~~~\n\n* Plone 3 compat [perrito]\n* Original implementation [nouri]",
    "bugtrack_url": null,
    "license": "",
    "summary": "Products.NoDuplicateLogin",
    "version": "2.0.1",
    "project_urls": {
        "Documentation": "https://pypi.org/project/Products.NoDuplicateLogin",
        "Source": "https://github.com/collective/Products.NoDuplicateLogin",
        "Tracker": "https://github.com/collective/Products.NoDuplicateLogin/issues"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "eeb2313582d7dbc343b170cbe7f5a0504d2606318214b1a0081b1d06f56c8249",
                "md5": "d023c66f1ec0e5752ce44f96ad665aa0",
                "sha256": "76edd9ffcae16e1304581a74c704a1a2afc602c6eb4041f33345d2d59e89dea9"
            },
            "downloads": -1,
            "filename": "Products.NoDuplicateLogin-2.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "d023c66f1ec0e5752ce44f96ad665aa0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 13442,
            "upload_time": "2023-12-07T09:55:31",
            "upload_time_iso_8601": "2023-12-07T09:55:31.916417Z",
            "url": "https://files.pythonhosted.org/packages/ee/b2/313582d7dbc343b170cbe7f5a0504d2606318214b1a0081b1d06f56c8249/Products.NoDuplicateLogin-2.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-07 09:55:31",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "collective",
    "github_project": "Products.NoDuplicateLogin",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "products.noduplicatelogin"
}
        
Elapsed time: 0.15013s