oauth/oauth.py
changeset 29 23de98e32b3b
parent 10 50b532f5e6cb
child 40 10a829681179
equal deleted inserted replaced
28:2d67738519d6 29:23de98e32b3b
     6 from flask import render_template, redirect, jsonify
     6 from flask import render_template, redirect, jsonify
     7 from flask_sqlalchemy import SQLAlchemy
     7 from flask_sqlalchemy import SQLAlchemy
     8 from werkzeug.security import gen_salt
     8 from werkzeug.security import gen_salt
     9 from flask_oauthlib.provider import OAuth2Provider
     9 from flask_oauthlib.provider import OAuth2Provider
    10 from settings.oauth_settings import OAuthSettings
    10 from settings.oauth_settings import OAuthSettings
       
    11 import uuid
    11 
    12 
    12 app = Flask(__name__, template_folder='templates')
    13 app = Flask(__name__, template_folder='templates')
    13 app.debug = True
    14 app.debug = True
    14 app.secret_key = 'secret'
    15 app.secret_key = 'secret'
    15 app.config.from_object(OAuthSettings)
    16 app.config.from_object(OAuthSettings)
    19 db = SQLAlchemy(app)
    20 db = SQLAlchemy(app)
    20 oauth = OAuth2Provider(app)
    21 oauth = OAuth2Provider(app)
    21 
    22 
    22 
    23 
    23 class User(db.Model):
    24 class User(db.Model):
    24     id = db.Column(db.Integer, primary_key=True)
    25     id = db.Column(db.String(256), primary_key=True)
    25     username = db.Column(db.String(40), unique=True)
    26     username = db.Column(db.String(40), unique=True)
    26 
    27     uai = db.Column(db.String(40), default="uaidefault")
    27 
    28 
    28 class Client(db.Model):
    29 class Client(db.Model):
    29     client_id = db.Column(db.String(40), primary_key=True)
    30     client_id = db.Column(db.String(40), primary_key=True)
    30     client_secret = db.Column(db.String(55), nullable=False)
    31     client_secret = db.Column(db.String(55), nullable=False)
    31     client_type = db.Column(db.String(12), nullable=False, default='public')
    32     client_type = db.Column(db.String(12), nullable=False, default='public')
   126 def home():
   127 def home():
   127     if request.method == 'POST':
   128     if request.method == 'POST':
   128         username = request.form.get('username')
   129         username = request.form.get('username')
   129         user = User.query.filter_by(username=username).first()
   130         user = User.query.filter_by(username=username).first()
   130         if not user:
   131         if not user:
   131             user = User(username=username)
   132             user = User(id=str(uuid.uuid4()), username=username)
   132             db.session.add(user)
   133             db.session.add(user)
   133             db.session.commit()
   134             db.session.commit()
   134         session['id'] = user.id
   135         session['id'] = user.id
   135         return redirect('/')
   136         return redirect('/')
   136     user = current_user()
   137     user = current_user()
   222 
   223 
   223 @app.route('/rest/user/InfoComplete')
   224 @app.route('/rest/user/InfoComplete')
   224 @oauth.require_oauth()
   225 @oauth.require_oauth()
   225 def user_info():
   226 def user_info():
   226     user = request.oauth.user
   227     user = request.oauth.user
   227     return jsonify(id=user.id, displayName=user.username)
   228     return jsonify(id=user.id, displayName=user.username, ENTPersonStructRattachUAI=user.uai)
   228 
   229 
   229 @app.route('/rest/oauth/validate/<token>')
   230 @app.route('/rest/oauth/validate/<token>')
   230 def validate_token(token):
   231 def validate_token(token):
   231     database_token = Token.query.filter_by(access_token=token).first()
   232     database_token = Token.query.filter_by(access_token=token).first()
   232     related_client = database_token.client
   233     related_client = database_token.client