| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- # -*- encoding: utf-8 -*-
- """
- Copyright (c) 2019 - present AppSeed.us
- """
- import os
- from flask import current_app as app
- from flask_login import current_user, login_user
- from flask_dance.consumer import oauth_authorized
- from flask_dance.contrib.github import github, make_github_blueprint
- from flask_dance.consumer.storage.sqla import SQLAlchemyStorage
- from sqlalchemy.orm.exc import NoResultFound
- from apps.config import Config
- from .models import Users, db, OAuth
- from flask import redirect, url_for
- from flask import flash
- github_blueprint = make_github_blueprint(
- client_id=Config.GITHUB_ID,
- client_secret=Config.GITHUB_SECRET,
- scope = 'user',
- storage=SQLAlchemyStorage(
- OAuth,
- db.session,
- user=current_user,
- user_required=False,
- ),
- )
- @oauth_authorized.connect_via(github_blueprint)
- def github_logged_in(blueprint, token):
- info = github.get("/user")
- if info.ok:
- account_info = info.json()
- username = account_info["login"]
- query = Users.query.filter_by(oauth_github=username)
- try:
- user = query.one()
- login_user(user)
- except NoResultFound:
- # Save to db
- user = Users()
- user.username = '(gh)' + username
- user.oauth_github = username
- # Save current user
- db.session.add(user)
- db.session.commit()
- login_user(user)
|