Django

Code

Changeset 3779

Show
Ignore:
Timestamp:
09/21/06 20:44:28 (2 years ago)
Author:
mtredinnick
Message:

Fixed #2629 -- Added a permission_required decorator to
django.contrib.auth.decorator. Thanks, dummy@habmalnefrage.de.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/contrib/auth/decorators.py

    r3478 r3779  
    2727    """ 
    2828    ) 
     29 
     30def permission_required(perm, login_url=LOGIN_URL): 
     31    """ 
     32    Decorator for views that checks if a user has a particular permission 
     33    enabled, redirectiing to the log-in page if necessary. 
     34    """ 
     35    return user_passes_test(lambda u: u.has_perm(perm), login_url=login_url) 
     36 
  • django/trunk/docs/authentication.txt

    r3747 r3779  
    457457    my_view = user_passes_test(lambda u: u.has_perm('polls.can_vote'))(my_view) 
    458458 
     459We are using this particular test as a relatively simple example, however be 
     460aware that if you just want to test if a permission is available to a user, 
     461you can use the ``permission_required()`` decorator described below. 
     462 
    459463Here's the same thing, using Python 2.4's decorator syntax:: 
    460464 
     
    488492    def my_view(request): 
    489493        # ... 
     494 
     495The permission_required decorator 
     496~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     497 
     498Since checking whether a user has a particular permission available to them is a 
     499relatively common operation, Django provides a shortcut for that particular 
     500case: the ``permission_required()`` decorator. Using this decorator, the 
     501earlier example can be written as:: 
     502 
     503    from django.contrib.auth.decorators import permission_required 
     504      
     505    def my_view(request): 
     506        # ... 
     507      
     508    my_view = permission_required('polls.can_vote')(my_view) 
     509 
     510Note that ``permission_required()`` also takes an optional ``login_url`` 
     511parameter. 
    490512 
    491513Limiting access to generic views