Skip to content

Middleware to make authentication data easily available to all parts of a django project

License

Notifications You must be signed in to change notification settings

thht/django-cuser

 
 

Repository files navigation

django-cuser - Take care of current user in silent way.

travis-cli tests status for django-cuser PyPI Wheel PyPI Status PyPI License PyPI Format PyPI Py_versions PyPI Downloads PyPI Implementation PyPI Version PyPI Egg

cuser will bring you Current user of your django application from anywhere in your code. I know, sounds fantastic ;)

django-cuser currently can be run on multiple python versions:

  • Python 2 (2.7)
  • Python 3 (3.4, 3.5)
  • PyPy

django-cuser is also available at http://pypi.python.org/pypi/django-cuser So it can be install it by pip or easy_install:

$ pip install django-cuser

Or you can grab the latest version tarball:

$ python setup.py install

To enable django-cuser in your project

  • Add cuser to INSTALLED_APPS in your settings.py
  • Add cuser.middleware.CuserMiddleware to MIDDLEWARE_CLASSES after the authentication and session middleware.

To set/get the user info, there is the following API:

from cuser.middleware import CuserMiddleware

Set the current user for this thread. Accepts user objects and login names:

CuserMiddleware.set_user(some_user)

Get the current user or None:

user = CuserMiddleware.get_user()

This will return some_user if there is no current user:

user = CuserMiddleware.get_user(some_user)

Forget the current user. It is always safe to call this, even if there is no current user:

CuserMiddleware.del_user()

The middleware automatically sets/deletes the current user for HTTP requests. For other uses (management commands, scripts), you will need to do this yourself.

cuser also provides a CurrentUserField, which can be used for auditing purposes. Use it as follows:

from cuser.fields import CurrentUserField

class MyModel(models.Model):
    ....
    creator = CurrentUserField(add_only=True, related_name="created_mymodels")
    last_editor = CurrentUserField(related_name="last_edited_mymodels")
    ...

This field is a ForeignKey to the settings.AUTH_USER_MODEL model and you can treat it as such.

django-cuser has been tested Django 1.8 and later. To run the the tests:

$ python run_tests.py

It's also available on travis-ci:

https://travis-ci.org/Alir3z4/django-cuser/

About

Middleware to make authentication data easily available to all parts of a django project

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%