application have to have user
This commit is contained in:
parent
e586183ac7
commit
94a8e3f25f
3 changed files with 28 additions and 25 deletions
|
|
@ -17,6 +17,11 @@ class Application(AbstractApplication):
|
||||||
Application model for use with Django OAuth Toolkit that allows the scopes
|
Application model for use with Django OAuth Toolkit that allows the scopes
|
||||||
available to an application to be restricted on a per-application basis.
|
available to an application to be restricted on a per-application basis.
|
||||||
"""
|
"""
|
||||||
|
user = models.ForeignKey(
|
||||||
|
settings.AUTH_USER_MODEL,
|
||||||
|
related_name="%(app_label)s_%(class)s",
|
||||||
|
on_delete=models.PROTECT
|
||||||
|
)
|
||||||
allowed_scope = models.TextField(blank=True)
|
allowed_scope = models.TextField(blank=True)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
@ -29,6 +34,28 @@ class Application(AbstractApplication):
|
||||||
return app_scopes.intersection(all_scopes)
|
return app_scopes.intersection(all_scopes)
|
||||||
|
|
||||||
|
|
||||||
|
class Resource(AbstractAccessToken):
|
||||||
|
source_refresh_token = None
|
||||||
|
id = None
|
||||||
|
application = None
|
||||||
|
|
||||||
|
uuid = models.UUIDField(primary_key=True, editable=False, default=uuid.uuid4, unique=True, db_index=True)
|
||||||
|
name = models.CharField(max_length=255, blank=True)
|
||||||
|
|
||||||
|
user = models.ForeignKey(
|
||||||
|
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True,
|
||||||
|
related_name="resources"
|
||||||
|
)
|
||||||
|
expires = models.DateTimeField()
|
||||||
|
token = models.CharField(max_length=255, unique=True, ) # introspect token
|
||||||
|
|
||||||
|
scope = 'introspection'
|
||||||
|
scopes = {'introspection': 'Introspect token scope'}
|
||||||
|
|
||||||
|
def allow_scopes(self, scopes):
|
||||||
|
return scopes == [self.scope]
|
||||||
|
|
||||||
|
|
||||||
class Scope(models.Model):
|
class Scope(models.Model):
|
||||||
"""
|
"""
|
||||||
Django model for an OAuth scope.
|
Django model for an OAuth scope.
|
||||||
|
|
@ -99,28 +126,6 @@ class Scope(models.Model):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
class Resource(AbstractAccessToken):
|
|
||||||
source_refresh_token = None
|
|
||||||
id = None
|
|
||||||
application = None
|
|
||||||
|
|
||||||
uuid = models.UUIDField(primary_key=True, editable=False, default=uuid.uuid4, unique=True, db_index=True)
|
|
||||||
name = models.CharField(max_length=255, blank=True)
|
|
||||||
|
|
||||||
user = models.ForeignKey(
|
|
||||||
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True,
|
|
||||||
related_name="resources"
|
|
||||||
)
|
|
||||||
expires = models.DateTimeField()
|
|
||||||
token = models.CharField(max_length=255, unique=True, ) # introspect token
|
|
||||||
|
|
||||||
scope = 'introspection'
|
|
||||||
scopes = {'introspection': 'Introspect token scope'}
|
|
||||||
|
|
||||||
def allow_scopes(self, scopes):
|
|
||||||
return scopes == [self.scope]
|
|
||||||
|
|
||||||
|
|
||||||
class Grant(AbstractGrant):
|
class Grant(AbstractGrant):
|
||||||
application = models.ForeignKey(
|
application = models.ForeignKey(
|
||||||
oauth2_settings.APPLICATION_MODEL, on_delete=models.CASCADE, related_name='grants'
|
oauth2_settings.APPLICATION_MODEL, on_delete=models.CASCADE, related_name='grants'
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ class IntrospectOAuth2Validator(OAuth2Validator):
|
||||||
|
|
||||||
if access_token and access_token.is_valid(scopes):
|
if access_token and access_token.is_valid(scopes):
|
||||||
request.client = access_token.application
|
request.client = access_token.application
|
||||||
request.user = access_token.user
|
request.user = access_token.user or (access_token.application and access_token.application.user)
|
||||||
request.scopes = scopes
|
request.scopes = scopes
|
||||||
|
|
||||||
# this is needed by django rest framework
|
# this is needed by django rest framework
|
||||||
|
|
@ -79,4 +79,3 @@ class IntrospectOAuth2Validator(OAuth2Validator):
|
||||||
else:
|
else:
|
||||||
self._set_oauth2_error_on_request(request, access_token, scopes)
|
self._set_oauth2_error_on_request(request, access_token, scopes)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,6 @@ OAUTH2_PROVIDER = {
|
||||||
|
|
||||||
# GOOYAL_DYNAMIC_SCOPES
|
# GOOYAL_DYNAMIC_SCOPES
|
||||||
RESOURCE_SERVER_REGISTER_SCOPE_URL = None
|
RESOURCE_SERVER_REGISTER_SCOPE_URL = None
|
||||||
INTROSPECT_SCOPE = None
|
|
||||||
REGISTER_SCOPE_SCOPE = None
|
REGISTER_SCOPE_SCOPE = None
|
||||||
|
|
||||||
REST_FRAMEWORK = {
|
REST_FRAMEWORK = {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue