diff --git a/lemonauth/views/indie.py b/lemonauth/views/indie.py index e1c7c28..1a80454 100644 --- a/lemonauth/views/indie.py +++ b/lemonauth/views/indie.py @@ -29,7 +29,7 @@ def canonical(url): @method_decorator(csrf_exempt, name='dispatch') class IndieView(TemplateView): template_name = 'lemonauth/indie.html' - required_params = ('me', 'client_id', 'redirect_uri') + required_params = ('client_id', 'redirect_uri') @method_decorator(login_required) @method_decorator(render_to(template_name)) @@ -43,9 +43,8 @@ class IndieView(TemplateView): 'parameter {0} is required'.format(param) ) - me = canonical(params['me']) - user = urljoin(utils.origin(request), request.user.url) - if user != me: + me = request.user.full_url + if 'me' in params and me != canonical(params['me']): return utils.forbid( 'you are logged in but not as {0}'.format(me) ) diff --git a/lemonauth/views/token.py b/lemonauth/views/token.py index 9178d3e..72543f0 100644 --- a/lemonauth/views/token.py +++ b/lemonauth/views/token.py @@ -34,12 +34,12 @@ class TokenView(View): return utils.bad_req( 'this endpoint only supports response_type=code' ) - if code.client_id != post.get('client_id'): + if 'client_id' in post and code.client_id != post['client_id']: return utils.forbid('client id did not match') if code.redirect_uri != post.get('redirect_uri'): return utils.forbid('redirect uri did not match') - if code.me != post.get('me'): + if 'me' in post and code.me != post['me']: return utils.forbid('me did not match') return utils.choose_type(req, { diff --git a/lemoncurry.paw b/lemoncurry.paw index 1a5de7a..f6706f7 100644 Binary files a/lemoncurry.paw and b/lemoncurry.paw differ