|
a/Allura/allura/controllers/rest.py |
|
b/Allura/allura/controllers/rest.py |
|
... |
|
... |
84 |
consumer = consumer_token.consumer
|
84 |
consumer = consumer_token.consumer
|
85 |
try:
|
85 |
try:
|
86 |
self.server.verify_request(req, consumer, access_token.as_token())
|
86 |
self.server.verify_request(req, consumer, access_token.as_token())
|
87 |
except:
|
87 |
except:
|
88 |
log.error('Invalid signature')
|
88 |
log.error('Invalid signature')
|
89 |
raise exc.HTTPForbidden
|
89 |
raise exc.HTTPForbidden
|
90 |
return access_token
|
90 |
return access_token
|
91 |
|
91 |
|
92 |
@expose()
|
92 |
@expose()
|
93 |
def request_token(self, **kw):
|
93 |
def request_token(self, **kw):
|
94 |
req = oauth.Request.from_request(
|
94 |
req = oauth.Request.from_request(
|
|
... |
|
... |
126 |
log.error('Invalid token %s', oauth_token)
|
126 |
log.error('Invalid token %s', oauth_token)
|
127 |
raise exc.HTTPForbidden
|
127 |
raise exc.HTTPForbidden
|
128 |
return dict(
|
128 |
return dict(
|
129 |
oauth_token=oauth_token,
|
129 |
oauth_token=oauth_token,
|
130 |
consumer=rtok.consumer_token)
|
130 |
consumer=rtok.consumer_token)
|
131 |
|
131 |
|
132 |
@expose('jinja:allura:templates/oauth_authorize_ok.html')
|
132 |
@expose('jinja:allura:templates/oauth_authorize_ok.html')
|
133 |
def do_authorize(self, yes=None, no=None, oauth_token=None):
|
133 |
def do_authorize(self, yes=None, no=None, oauth_token=None):
|
134 |
security.require_authenticated()
|
134 |
security.require_authenticated()
|
135 |
rtok = M.OAuthRequestToken.query.get(api_key=oauth_token)
|
135 |
rtok = M.OAuthRequestToken.query.get(api_key=oauth_token)
|
136 |
if no:
|
136 |
if no:
|
|
... |
|
... |
146 |
else:
|
146 |
else:
|
147 |
url = rtok.callback + '?'
|
147 |
url = rtok.callback + '?'
|
148 |
url+='oauth_token=%s&oauth_verifier=%s' % (
|
148 |
url+='oauth_token=%s&oauth_verifier=%s' % (
|
149 |
rtok.api_key, rtok.validation_pin)
|
149 |
rtok.api_key, rtok.validation_pin)
|
150 |
redirect(url)
|
150 |
redirect(url)
|
151 |
|
151 |
|
152 |
@expose()
|
152 |
@expose()
|
153 |
def access_token(self, **kw):
|
153 |
def access_token(self, **kw):
|
154 |
req = oauth.Request.from_request(
|
154 |
req = oauth.Request.from_request(
|
155 |
request.method,
|
155 |
request.method,
|
156 |
request.url.split('?')[0],
|
156 |
request.url.split('?')[0],
|
|
... |
|
... |
207 |
def _lookup(self, name, *remainder):
|
207 |
def _lookup(self, name, *remainder):
|
208 |
if not name:
|
208 |
if not name:
|
209 |
return self, ()
|
209 |
return self, ()
|
210 |
if not h.re_path_portion.match(name):
|
210 |
if not h.re_path_portion.match(name):
|
211 |
raise exc.HTTPNotFound, name
|
211 |
raise exc.HTTPNotFound, name
|
212 |
subproject = M.Project.query.get(shortname=c.project.shortname + '/' + name, deleted=False)
|
212 |
subproject = M.Project.query.get(shortname=c.project.shortname + '/' + name,
|
|
|
213 |
neighborhood_id=c.project.neighborhood_id,
|
|
|
214 |
deleted=False)
|
213 |
if subproject:
|
215 |
if subproject:
|
214 |
c.project = subproject
|
216 |
c.project = subproject
|
215 |
c.app = None
|
217 |
c.app = None
|
216 |
return ProjectRestController(), remainder
|
218 |
return ProjectRestController(), remainder
|
217 |
app = c.project.app_instance(name)
|
219 |
app = c.project.app_instance(name)
|