Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ python:
- "2.6"
- "2.7"
env:
- DJANGO=1.3.1
- DJANGO=1.5.4
install:
- pip install Django==$DJANGO
- python setup.py install
Expand Down
3 changes: 3 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
0.3.1:
* Django 1.5 support

0.3:
* Fix a bug in the max_age cookie setting
* Fix packaging
Expand Down
13 changes: 13 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,19 @@ indicate if the user session is fresh. The name of the session var can be
changed by setting the ``AUTH_REMEMBER_SESSION_KEY`` in you're settings file.


If You Have a Custom User Model
-------------------------------

From Django 1.5 on wards it is possible to swap a different model in for the
usual auth.user. In this case the migrations included in this module will not
work, since they refer to the default user model. One workaround for this
problem is to copy the ``auth_remember`` directory in to you project and
either delete the ``migrations`` subdirectory (forcing it to rely on
old-fashioned ``syncdb``), or update the migration with this command::

./manage.py schemamigration auth_remember --update --initial


More information
----------------

Expand Down
6 changes: 3 additions & 3 deletions auth_remember/backend.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from django.contrib.auth.models import User
from django.contrib.auth import get_user_model

from auth_remember import utils
from auth_remember.models import RememberToken
Expand Down Expand Up @@ -26,6 +26,6 @@ def authenticate(self, token_string, request):

def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return get_user_model().objects.get(pk=user_id)
except get_user_model().DoesNotExist:
return None
13 changes: 7 additions & 6 deletions auth_remember/models.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from datetime import datetime, timedelta
from datetime import timedelta

from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
from django.conf import settings as django_settings

from auth_remember import settings
from auth_remember.auth_utils import check_password
Expand All @@ -16,24 +17,24 @@ def get_by_string(self, token_string):
except ValueError:
return

max_age = datetime.now() - timedelta(seconds=settings.COOKIE_AGE)
max_age = timezone.now() - timedelta(seconds=settings.COOKIE_AGE)
for token in self.filter(created_initial__gte=max_age, user=user_id):
if check_password(token_hash, token.token_hash):
return token

def clean_remember_tokens(self):
max_age = datetime.now() - timedelta(seconds=settings.COOKIE_AGE)
max_age = timezone.now() - timedelta(seconds=settings.COOKIE_AGE)
return self.filter(created_initial__lte=max_age).delete()


class RememberToken(models.Model):
token_hash = models.CharField(max_length=60, blank=False, primary_key=True)

created = models.DateTimeField(editable=False, blank=True,
default=datetime.now)
default=timezone.now)

created_initial = models.DateTimeField(editable=False, blank=False)

user = models.ForeignKey(User, related_name="remember_me_tokens")
user = models.ForeignKey(django_settings.AUTH_USER_MODEL, related_name="remember_me_tokens")

objects = RememberTokenManager()
13 changes: 7 additions & 6 deletions auth_remember/tests.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
import time

from django.contrib import auth
from django.contrib.auth.models import User, AnonymousUser
from django.contrib.auth.models import AnonymousUser
from django.contrib.auth import get_user_model
from django.contrib.sessions.middleware import SessionMiddleware
from django.http import HttpResponse
from django.test import TestCase
from django.test.client import RequestFactory



class TokenCreationTest(TestCase):
def setUp(self):
self.user = User(username='test_user')
self.user.save()
junk_params = dict((x, x.upper()) for x in get_user_model().REQUIRED_FIELDS)
self.user = get_user_model().objects.create_user('TEST_USER', password='PASSWORD', **junk_params)

def test_create_token_string(self):
from auth_remember.utils import create_token_string
Expand Down Expand Up @@ -44,9 +46,8 @@ def test_create_token_string_token_arg(self):

class AuthTest(TestCase):
def setUp(self):
self.user = User(username='test_user')
self.user.set_password('secret')
self.user.save()
junk_params = dict((x, x.upper()) for x in get_user_model().REQUIRED_FIELDS)
self.user = get_user_model().objects.create_user('test_user', password='secret', **junk_params)
self.factory = RequestFactory()

def test_auth_backend(self):
Expand Down
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@


install_requires = [
'Django>=1.3',
'Django>=1.5',
]


Expand Down Expand Up @@ -50,7 +50,7 @@ def finalize_options(self):

setup(
name='django-auth-remember',
version='0.3',
version='0.3.1',
url='https://github.com/ailabs/django-auth-remember/',
license='MIT',
author='Michael van Tellingen',
Expand Down