예제 #1
0
파일: views.py 프로젝트: tikz/ns2sud-web
def oauth_callback():
    oauth = OAuthSignIn()
    discord_id, discord_tag, discord_avatar, discord_locale = oauth.callback()
    if discord_id is None:
        flash('Discord authentication failed.')
        return redirect(url_for('index'))
    user = models.User.query.filter_by(discord_id=discord_id).first()

    if not user:
        while True:
            token = app.config['LINK_PREFIX'] + \
                ''.join(random.choices(
                    string.ascii_lowercase + string.digits, k=5))
            token_exists = models.User.query.filter_by(token=token).first()
            if not token_exists:
                break
        user = models.User(discord_id=discord_id,
                           discord_tag=discord_tag,
                           discord_avatar=discord_avatar,
                           discord_locale=discord_locale,
                           created=datetime.datetime.now(),
                           token=token)
        db.session.add(user)
        db.session.commit()
    login_user(user, True)
    return redirect(url_for('user'))