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())
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)
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)
def logout(): session.pop('openid', None) # None - чтобы не было KeyError при отсутствующем ключе session.pop('nick', None) flash(u'Вы вышли из системы') return redirect(oid.get_next_url(), 303)