Adds the decorator
This commit is contained in:
parent
786bbd79e8
commit
1e2675b0c0
@ -18,6 +18,7 @@ from functools import wraps
|
|||||||
|
|
||||||
from urlparse import urljoin
|
from urlparse import urljoin
|
||||||
from werkzeug.exceptions import Forbidden, NotFound
|
from werkzeug.exceptions import Forbidden, NotFound
|
||||||
|
from oauthlib.oauth1 import ResourceEndpoint
|
||||||
|
|
||||||
from mediagoblin import mg_globals as mgg
|
from mediagoblin import mg_globals as mgg
|
||||||
from mediagoblin import messages
|
from mediagoblin import messages
|
||||||
@ -271,7 +272,7 @@ def auth_enabled(controller):
|
|||||||
|
|
||||||
return wrapper
|
return wrapper
|
||||||
|
|
||||||
def oauth_requeired(controller):
|
def oauth_required(controller):
|
||||||
""" Used to wrap API endpoints where oauth is required """
|
""" Used to wrap API endpoints where oauth is required """
|
||||||
@wraps(controller)
|
@wraps(controller)
|
||||||
def wrapper(request, *args, **kwargs):
|
def wrapper(request, *args, **kwargs):
|
||||||
@ -282,5 +283,18 @@ def oauth_requeired(controller):
|
|||||||
error = "Missing required parameter."
|
error = "Missing required parameter."
|
||||||
return json_response({"error": error}, status=400)
|
return json_response({"error": error}, status=400)
|
||||||
|
|
||||||
|
|
||||||
|
request_validator = GMGRequestValidator()
|
||||||
|
resource_endpoint = ResourceEndpoint(request_validator)
|
||||||
|
valid, request = resource_endpoint.validate_protected_resource_request(
|
||||||
|
uri=request.url,
|
||||||
|
http_method=request.method,
|
||||||
|
body=request.get_data(),
|
||||||
|
headers=dict(request.headers),
|
||||||
|
)
|
||||||
|
#print "[VALID] %s" % valid
|
||||||
|
#print "[REQUEST] %s" % request
|
||||||
|
|
||||||
|
return controller(request, *args, **kwargs)
|
||||||
|
|
||||||
|
return wrapper
|
||||||
|
@ -24,6 +24,8 @@ from mediagoblin.db.models import Client, RequestToken, AccessToken
|
|||||||
|
|
||||||
class GMGRequestValidator(RequestValidator):
|
class GMGRequestValidator(RequestValidator):
|
||||||
|
|
||||||
|
enforce_ssl = False
|
||||||
|
|
||||||
def __init__(self, data=None):
|
def __init__(self, data=None):
|
||||||
self.POST = data
|
self.POST = data
|
||||||
|
|
||||||
|
@ -41,3 +41,9 @@ add_route(
|
|||||||
"/oauth/access_token",
|
"/oauth/access_token",
|
||||||
"mediagoblin.federation.views:access_token"
|
"mediagoblin.federation.views:access_token"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_route(
|
||||||
|
"mediagoblin.federation",
|
||||||
|
"/api/test",
|
||||||
|
"mediagoblin.federation.views:test"
|
||||||
|
)
|
||||||
|
@ -19,7 +19,7 @@ import datetime
|
|||||||
from oauthlib.oauth1 import (AuthorizationEndpoint, RequestValidator,
|
from oauthlib.oauth1 import (AuthorizationEndpoint, RequestValidator,
|
||||||
RequestTokenEndpoint, AccessTokenEndpoint)
|
RequestTokenEndpoint, AccessTokenEndpoint)
|
||||||
|
|
||||||
from mediagoblin.decorators import require_active_login
|
from mediagoblin.decorators import require_active_login, oauth_required
|
||||||
from mediagoblin.tools.translate import pass_to_ugettext
|
from mediagoblin.tools.translate import pass_to_ugettext
|
||||||
from mediagoblin.meddleware.csrf import csrf_exempt
|
from mediagoblin.meddleware.csrf import csrf_exempt
|
||||||
from mediagoblin.tools.request import decode_request
|
from mediagoblin.tools.request import decode_request
|
||||||
@ -337,4 +337,8 @@ def access_token(request):
|
|||||||
av = AccessTokenEndpoint(request_validator)
|
av = AccessTokenEndpoint(request_validator)
|
||||||
tokens = av.create_access_token(request, {})
|
tokens = av.create_access_token(request, {})
|
||||||
return form_response(tokens)
|
return form_response(tokens)
|
||||||
|
|
||||||
|
@csrf_exempt
|
||||||
|
@oauth_required
|
||||||
|
def test(request):
|
||||||
|
return json_response({"check":"OK"})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user