Esempio n. 1
0
def do_signin():
    session = _get_session()
    user = bottle.request.forms.get('user')
    password = bottle.request.forms.get('pass')

    if not user or not password:
        session['error'] = 'Both username and password are required.'
        session.save()
        bottle.redirect('/signin')

    try:
        conn = deco.connect(database=user, user=user, password=password)
    except psycopg2.Error as e:
        if 'authentication failed' in unicode(e):
            session['error'] = 'Password authentication failed.'
        elif 'does not exist' in unicode(e):
            session['error'] = 'Username does not exist.'
        else:
            session['error'] = unicode(e)
        session.save()
        bottle.redirect('/signin')
    else:
        conn.close()

    session['user'] = user
    session['password'] = password
    if bottle.request.forms.get('remember'):
        session['_expires'] = datetime.utcnow() + timedelta(days=7)
    session.save()
    bottle.redirect('/')
Esempio n. 2
0
def _connect():
    session = _get_session()
    try:
        conn = deco.connect(database=session['user'],
                            user=session['user'],
                            password=session['password'])
    except (KeyError, psycopg2.Error):
        raise RuntimeError('database connection failed')
    return conn