diff options
| author | Tom Christie | 2012-09-12 20:39:22 +0100 |
|---|---|---|
| committer | Tom Christie | 2012-09-12 20:39:22 +0100 |
| commit | 003a65f0e094e59b5462fcd0607bf290d80cc5aa (patch) | |
| tree | c514790099c155e18897012cc4599a60f191832e /djangorestframework/tokenauth/models.py | |
| parent | dac4cb9e8bf107f407ed8754bbef0ce97e79beb2 (diff) | |
| download | django-rest-framework-003a65f0e094e59b5462fcd0607bf290d80cc5aa.tar.bz2 | |
Tweaks to Token auth
Diffstat (limited to 'djangorestframework/tokenauth/models.py')
| -rw-r--r-- | djangorestframework/tokenauth/models.py | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/djangorestframework/tokenauth/models.py b/djangorestframework/tokenauth/models.py index f289b0fd..e8886112 100644 --- a/djangorestframework/tokenauth/models.py +++ b/djangorestframework/tokenauth/models.py @@ -1,15 +1,34 @@ import uuid +import hmac +from hashlib import sha1 from django.db import models -class BasicToken(models.Model): + +class TokenManager(models.Manager): + """ + Manager class to provide `Token.objects.create_token(user=user)`. + """ + def create_token(self, user): + token = Token(user=user) + token.save() + return token + + +class Token(models.Model): """ - The default authorization token model class. + The default authorization token model. """ - key = models.CharField(max_length=32, primary_key=True, blank=True) + key = models.CharField(max_length=40, primary_key=True) user = models.ForeignKey('auth.User') revoked = models.BooleanField(default=False) + created = models.DateTimeField(auto_now_add=True) + objects = TokenManager() def save(self, *args, **kwargs): if not self.key: - self.key = uuid.uuid4().hex - return super(BasicToken, self).save(*args, **kwargs) + self.key = self.generate_key() + return super(Token, self).save(*args, **kwargs) + + def generate_key(self): + unique = str(uuid.uuid4()) + return hmac.new(unique, digestmod=sha1).hexdigest() |
