Esempio n. 1
0
def callback():
    from config import Auth
    from src.model import get_google_auth
    from src.model import User, db
    # Redirect user to home page if already logged in.
    if current_user is not None and current_user.is_authenticated():
        print("You are authorized...woo")
        return redirect(url_for('knowledge.index'))
    if 'error' in request.args:
        if request.args.get('error') == 'access_denied':
            return 'You denied access.'
        return 'Error encountered.'
    if 'code' not in request.args and 'state' not in request.args:
        return redirect(url_for('login'))
    else:
        # Execution reaches here when user has
        # successfully authenticated our app.

        google = get_google_auth()
        """
        if ( 'oauth_state' in session):
            google = get_google_auth(state=session['oauth_state'])
        try:
            token = google.fetch_token(
                Auth.TOKEN_URI,
                client_secret=Auth.CLIENT_SECRET,
                authorization_response=request.url)
        except HTTPError:
            return 'HTTPError occurred.'
        """

        token = google.fetch_token(Auth.TOKEN_URI,
                                   client_secret=Auth.CLIENT_SECRET,
                                   authorization_response=request.url)
        google = get_google_auth(token=token)
        resp = google.get(Auth.USER_INFO)
        if resp.status_code == 200:
            user_data = resp.json()
            email = user_data['email']
            print "Email id is " + email
            user = User.query.filter_by(email=email).first()
            exited = True
            if user is None:
                exited = False
                user = User()
                user.email = email
            user.name = user_data['name']
            print "User name is " + user.name
            user.tokens = json.dumps(token)
            user.avatar = user_data['picture']
            db.session.add(user)
            db.session.commit()
            login_user(user)
            if (not exited):
                flash(
                    "Successfully logged in, have a check on your preferences")
                return redirect(url_for('knowledge.preference'))
            else:
                return redirect(url_for('knowledge.index'))
        return 'Could not fetch your information.'
Esempio n. 2
0
    def add_user(self, user: UserEntity):
        new_user = User()
        new_user.id = user.id
        new_user.name = user.name
        new_user.picture_url = user.picture_url
        new_user.status_message = user.status_message

        db.session.add(new_user)
        db.session.commit()