#!/usr/bin/env python
# encoding: utf-8

from __future__ import unicode_literals

from bottle import default_app, get, post, auth_basic, run, request, abort
from beaker.middleware import SessionMiddleware

app = default_app()
app = SessionMiddleware(app, {
    'session.type': 'cookie',
    'session.cookie_expire': True,
    'session.auto': True,
    'session.validate_key': 'arandomkeystring',
})

def auth_check(username, password):
    return username == 'user' and password == 'pass'

@post('/login')
@auth_basic(check=auth_check)
def login():
    if 'name' not in request.forms:
        abort(400, 'I need you name, hitchhiker!')
    session = request.environ['beaker.session']
    session['user'] = request.forms['name']
    return 'ok'

@get('/whoami')
@auth_basic(check=auth_check)
def whoami():
    session = request.environ['beaker.session']
    return 'You are ' + session.get('user', 'a guest')

run(app=app, host='127.0.0.1', port=5050)