--- a/oauth/client.py Wed Feb 17 16:14:04 2016 +0100
+++ b/oauth/client.py Mon Feb 29 12:22:07 2016 +0100
@@ -1,8 +1,9 @@
from flask import Flask, url_for, session, request, jsonify, render_template, redirect
from flask_oauthlib.client import OAuth
from settings.client_settings import ClientSettings
-
-
+import base64
+import requests
+import json
app = Flask(__name__)
app.debug = True
@@ -24,15 +25,47 @@
@app.route('/')
def index():
- if 'remote_oauth' in session:
- resp = remote.get('me')
- username = resp.data.get("username", "")
- return render_template('client/index.html', username=username)
- next_url = request.args.get('next') or request.referrer or None
- return remote.authorize(
- callback=url_for('authorized', next=next_url, _external=True)
- )
+ if 'remote_oauth_authorizationcode' not in session:
+ next_url = request.args.get('next') or request.referrer or None
+ return remote.authorize(
+ callback=url_for('authorized', next=next_url, _external=True)
+ )
+ if 'me' not in session:
+ resp = remote.get('user/InfoComplete')
+ print("authcode resp data: "+str(resp.data))
+ me = resp.data.get("username", "")
+ session["me"] = me
+ if 'remote_oauth_clientcredentials' not in session:
+ auth_string = bytes(app.config["CLIENT_ID"]+':'+app.config['CLIENT_SECRET'], "utf-8")
+ auth_code = base64.b64encode(auth_string).decode("utf-8")
+ resp = requests.post(app.config["ACCESS_TOKEN_URL"]+"?grant_type=client_credentials&scope=basic", data={}, headers={
+ 'Authorization': 'Basic %s' % auth_code,
+ })
+ if resp is None:
+ return 'Access denied: reason=%s error=%s' % (
+ request.args['error_reason'],
+ request.args['error_description']
+ )
+ session['remote_oauth_clientcredentials'] = (json.loads(resp.text)['access_token'], '')
+ resp = remote.get('user/InfoComplete')
+ print("clientcredentials resp data: "+str(resp.data))
+ server = resp.data.get("username", "")
+ session["server"] = server
+ return render_template('client/index.html', current_username=session["me"], oauth_username=session["server"])
+@app.route('/renkan-request')
+def renkan_request():
+ if 'remote_oauth_clientcredentials' in session:
+ resp = requests.post(
+ app.config["CREATE_RENKAN_ENDPOINT"]+"?act_as="+session.get("me", "anonymous"),
+ {"title": "RENKAN_FROM_GED"},
+ headers={
+ 'Authorization': 'Bearer %s' % session['remote_oauth_clientcredentials'][0],
+ 'renkan-act-as': session.get("me", "anonymous")
+ }
+ )
+ print(resp.text)
+ return redirect('/')
@app.route('/authorized')
def authorized():
@@ -42,14 +75,19 @@
request.args['error_reason'],
request.args['error_description']
)
- print resp
- session['remote_oauth'] = (resp['access_token'], '')
+ session['remote_oauth_authorizationcode'] = (resp['access_token'], '')
+
return redirect('/')
@remote.tokengetter
def get_oauth_token():
- return session.get('remote_oauth')
+ print("referrer : "+request.referrer)
+ if 'remote_oauth_clientcredentials' in session and 'server' not in session:
+ return session['remote_oauth_clientcredentials']
+ else:
+ return session.get('remote_oauth_authorizationcode', '')
+
if __name__ == '__main__':