コード例 #1
0
ファイル: user.py プロジェクト: sy264115809/techshow
def login_by_qiniu_callback():
    """Qiniu OAuth 回调
    """
    code, info = OAuthSignIn.get_provider('qiniu').callback()
    if code is None:
        raise OAuthFail()

    user = User.query.filter_by(qiniu_id = info.get('uid')).first()
    if user is None:
        user = User(
                qiniu_id = info.get('uid'),
                name = info.get('full_name'),
                nickname = info.get('full_name'),
                gender = info.get('gender')
        )
        db.session.add(user)

    # update qiniu info
    user.qiniu_name = info.get('full_name')
    user.qiniu_email = info.get('email')

    # update oauth_code
    user.oauth_code = code
    db.session.commit()

    # 如果是admin来请求oauth
    if request.referrer == url_for('admin.admin_login', _external = True):
        if user.qiniu_email in current_app.config['TECHSHOW_ADMINs']:
            login_user(user)
            return redirect(url_for('admin.admin_index'))

    return render_template('oauth_pending.html', oauth_logo = '/static/images/qiniu_logo.png')