Add abstract class for Code and Token models.
This commit is contained in:
parent
9b321fef9a
commit
0f03bdfb67
|
@ -5,15 +5,6 @@ from django.utils import timezone
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
|
||||||
|
|
||||||
def scope_property():
|
|
||||||
def fget(self):
|
|
||||||
return self._scope.split()
|
|
||||||
def fset(self, value):
|
|
||||||
self._scope = ' '.join(value)
|
|
||||||
|
|
||||||
return locals()
|
|
||||||
|
|
||||||
|
|
||||||
class Client(models.Model):
|
class Client(models.Model):
|
||||||
|
|
||||||
RESPONSE_TYPE_CHOICES = [
|
RESPONSE_TYPE_CHOICES = [
|
||||||
|
@ -43,32 +34,36 @@ class Client(models.Model):
|
||||||
return self.redirect_uris[0] if self.redirect_uris else ''
|
return self.redirect_uris[0] if self.redirect_uris else ''
|
||||||
|
|
||||||
|
|
||||||
class Code(models.Model):
|
class BaseCodeTokenModel(models.Model):
|
||||||
|
|
||||||
user = models.ForeignKey(User)
|
user = models.ForeignKey(User)
|
||||||
client = models.ForeignKey(Client)
|
client = models.ForeignKey(Client)
|
||||||
code = models.CharField(max_length=255, unique=True)
|
|
||||||
expires_at = models.DateTimeField()
|
expires_at = models.DateTimeField()
|
||||||
|
|
||||||
_scope = models.TextField(default='')
|
_scope = models.TextField(default='')
|
||||||
scope = property(**scope_property())
|
def scope():
|
||||||
|
def fget(self):
|
||||||
|
return self._scope.split()
|
||||||
|
def fset(self, value):
|
||||||
|
self._scope = ' '.join(value)
|
||||||
|
return locals()
|
||||||
|
scope = property(**scope())
|
||||||
|
|
||||||
def has_expired(self):
|
def has_expired(self):
|
||||||
return timezone.now() >= self.expires_at
|
return timezone.now() >= self.expires_at
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
abstract = True
|
||||||
|
|
||||||
class Token(models.Model):
|
|
||||||
|
|
||||||
user = models.ForeignKey(User)
|
class Code(BaseCodeTokenModel):
|
||||||
client = models.ForeignKey(Client)
|
|
||||||
|
code = models.CharField(max_length=255, unique=True)
|
||||||
|
|
||||||
|
|
||||||
|
class Token(BaseCodeTokenModel):
|
||||||
|
|
||||||
access_token = models.CharField(max_length=255, unique=True)
|
access_token = models.CharField(max_length=255, unique=True)
|
||||||
expires_at = models.DateTimeField()
|
|
||||||
|
|
||||||
_scope = models.TextField(default='')
|
|
||||||
scope = property(**scope_property())
|
|
||||||
|
|
||||||
_id_token = models.TextField()
|
_id_token = models.TextField()
|
||||||
|
|
||||||
def id_token():
|
def id_token():
|
||||||
def fget(self):
|
def fget(self):
|
||||||
return json.loads(self._id_token)
|
return json.loads(self._id_token)
|
||||||
|
|
Loading…
Reference in a new issue