Codebase Update
This commit is contained in:
58
apps/authentication/oauth.py
Normal file
58
apps/authentication/oauth.py
Normal file
@ -0,0 +1,58 @@
|
||||
# -*- 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 flask_dance.contrib.twitter import twitter, make_twitter_blueprint
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user