Search code examples
pythonoauthmongoengineflask-loginrauth

How to use sessions with MongoEngine and Flask-Login?


I'm using Flask-Login, MongoEngine, OAuth with Rauth for Flask.

I need to save my user's session in MongoEngine but I don't know how to do it.

My code is that:

@app.route('/callback/<provider>')
def oauth_callback(provider):
    if not current_user.is_anonymous:
        return redirect(url_for('index'))
    oauth = OAuthSignIn.get_provider(provider)
    social_id, username, email = oauth.callback()
    if social_id is None:
        flash('Authentication failed.')
        return redirect(url_for('index'))
    user = User.objects(social_id=social_id).first()
    if not user:
        user = User(social_id=social_id, nickname=username, email=email)
        user.save()
        db.session.add(user)
        db.session.commit()
    login_user(user, True)
    return redirect(url_for('index'))

In code, this lines db.session.add(user) and db.session.commit() is for SQL but I dont know how do it in MongoEngine.

Is there any way to do it in MongoEngine in a simple way?

Thanks!!


Solution

  • The line user.save() is doing the job. Can use current_user.save() depending on code.