Skip to main content

Get inside your stronghold and make all your Django views default login_required

Project description

![travis](https://travis-ci.org/mgrouchy/django-stronghold.png?branch=master)

#Stronghold

Get inside your stronghold and make all your Django views default login_required

Stronghold is a very small and easy to use django app that makes all your Django project default to require login for all of your views.

WARNING: still in development, so some of the DEFAULTS and such will be changing without notice.

##Installation

Install via pip.

```sh
pip install django-stronghold
```

Add stronghold to your INSTALLED_APPS in your Django settings file

```python

INSTALLED_APPS = (
#...
'stronghold',
)
```

Then add the stronghold middleware to your MIDDLEWARE_CLASSES in your Django settings file

```python
MIDDLEWARE_CLASSES = (
#...
'stronghold.middleware.LoginRequiredMiddleware',
)

```

##Usage

If you followed the installation instructions now all your views are defaulting to require a login.
To make a view public again you can use the public decorator provided in `stronghold.decorators` like so:

###For function based views
```python
from stronghold.decorators import public


@public
def someview(request):
# do some work
#...

```

###for class based views

```python
from django.utils.decorators import method_decorator
from stronghold.decorators import public


class SomeView(View):
def get(self, request, *args, **kwargs):
# some view logic
#...

@method_decorator(public)
def dispatch(self, *args, **kwargs):
return super(SomeView, self).dispatch(*args, **kwargs)
```

##Configuration (optional)


###STRONGHOLD_DEFAULTS

Use Strongholds defaults in addition to your own settings.

**Default**:

```python
STRONGHOLD_DEFAULTS = True
```

You can add a tuple of url regexes in your settings file with the
`STRONGHOLD_PUBLIC_URLS` setting. Any url that matches against these patterns
will be made public without using the `@public` decorator.


###STRONGHOLD_PUBLIC_URLS

**Default**:
```python
STRONGHOLD_PUBLIC_URLS = ()
```

If STRONGHOLD_DEFAULTS is True STRONGHOLD_PUBLIC_URLS contains:
```python
(
r'^%s.+$' % settings.STATIC_URL,
r'^%s.+$' % settings.MEDIA_URL,
)

```
When settings.DEBUG = True. This is additive to your settings to support serving
Static files and media files from the development server. It does not replace any
settings you may have in `STRONGHOLD_PUBLIC_URLS`.

> Note: Public URL regexes are matched against [HttpRequest.path_info](https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.path_info).

###STRONGHOLD_PUBLIC_NAMED_URLS
You can add a tuple of url names in your settings file with the
`STRONGHOLD_PUBLIC_NAMED_URLS` setting. Names in this setting will be reversed using
`django.core.urlresolvers.reverse` and any url matching the output of the reverse
call will be made public without using the `@public` decorator:

**Default**:
```python
STRONGHOLD_PUBLIC_NAMED_URLS = ()
```

If STRONGHOLD_DEFAULTS is True additionally we search for `django.contrib.auth`
if it exists, we add the login and logout view names to `STRONGHOLD_PUBLIC_NAMED_URLS`

###STRONGHOLD_PERMISSIONS_DECORATOR
Optionally configure STRONGHOLD_PERMISSIONS_DECORATOR to be something besides
`login_required`. This allows the developer to set this to an alternative
decorator like `staff_member_required` or a user created decorator that
processes a view function and returns `None` or a `HTTPResponse`.

**Default**:
```python
STRONGHOLD_PERMISSIONS_DECORATOR = login_required
```

##Compatiblity

Tested with:
* Django 1.4.x
* Django 1.5.x
* Django 1.6.x

##Contribute

See CONTRIBUTING.md

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-stronghold-0.2.5.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

django_stronghold-0.2.5-py27-none-any.whl (9.5 kB view details)

Uploaded Python 2.7

File details

Details for the file django-stronghold-0.2.5.tar.gz.

File metadata

File hashes

Hashes for django-stronghold-0.2.5.tar.gz
Algorithm Hash digest
SHA256 52db979b86b74e1ca7b7f1bd43d1d7bbbdf02f7a83a46267503c4a101c257c17
MD5 3c8585b2aa9c50f4ea43912e4f1a21cd
BLAKE2b-256 71a6525be56e6df056b1cce4b8cdbe2121e87ca5887b58c542d28b0724b24c43

See more details on using hashes here.

File details

Details for the file django_stronghold-0.2.5-py27-none-any.whl.

File metadata

File hashes

Hashes for django_stronghold-0.2.5-py27-none-any.whl
Algorithm Hash digest
SHA256 11b05214b8e6fc093a37ea11e2bb8048261e5ae4b29f47adb82777794b54ef9f
MD5 b97b45e706e1f8d49935534bb2a83894
BLAKE2b-256 693f9ab2a271b0205c24e2e8456d41199e643b6d4b565803a0fdd68b4b47b340

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page