Example #1
0
def index():
    if g.user is not None:
        return redirect(oid.get_next_url(), 303)
    if request.method == 'POST':
        if request.form.get('gentoo'):
            nick = request.form.get('login')
            # TODO: возможно, проверить ник на валидность набора символов
            session['nick'] = nick
            openid = 'http://www.gentoo.ru/users/%s/identity' % nick
        else:
            openid = request.form.get('openid')
        if openid:
            return oid.try_login(openid, ask_for=['nickname', 'email'])
    return render_template('login.html', next=oid.get_next_url(), error=oid.fetch_error())
Example #2
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)
Example #3
0
def logout():
    session.pop('openid', None) # None - чтобы не было KeyError при отсутствующем ключе
    session.pop('nick', None)
    flash(u'Вы вышли из системы')
    return redirect(oid.get_next_url(), 303)