Ejemplo n.º 1
0
def do_auth(resp):
    print 'in do_auth'
    session['openid'] = resp.identity_url
    user = User.query.filter_by(openid=resp.identity_url).first()
    if user is None:  # регистрируем
        if not resp.nickname and not 'nick' in session:
            return 'Ошибка: не указан ник'  # TODO: запросить ник у пользователя. То же для email, если не уникален.
        # а должен ли email быть уникальным?
        nick = resp.nickname or session['nick']
        n = 1
        while User.query.filter_by(
                nick=nick).count() > 0:  # обеспечиваем уникальность ника
            nick = '%s_%d' % (resp.nickname, n)
            n += 1
        user = User(nick, resp.email, openid=resp.identity_url)
        db.session.add(user)
        db.session.commit()
        flash(u'Пользователь зарегистрирован')
    flash(u'Вход выполнен')
    user.update_lastlogin()
    g.user = user
    return redirect(oid.get_next_url(), 303)