1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
from bottle import request, route, template, default_app, run
from beaker.middleware import SessionMiddleware
from cork import Cork
app = default_app()
aaa = Cork('example_conf')
app = SessionMiddleware(app, {
'beaker.session.auto': True,
'beaker.session.type': 'cookie',
'beaker.session.validate_key': True,
'beaker.session.cookie_expires': True,
'beaker.session.timeout': 3600 * 24})
@route('/createuser')
def createuser():
tstamp = str(datetime.utcnow())
username = 'root'
password = 'pwd'
cork._store.users[username] = {
'role': 'admin',
'hash': cork._hash(username, password),
'email_addr': username + '@localhost.local',
'desc': username + ' test user',
'creation_date': tstamp
}
return "User created"
@route('/login', method=['GET', 'POST'])
def login():
if request.method == 'GET':
return template("""
<html>
<form method="post" action="/login">
<input name="user" required="required" type="text" placeholder="user">
<input name="password" type="password" required="required" placeholder="password">
<input type="submit" name="login" value="login">
</form>
</html>
""")
if request.method == 'POST':
username = request.POST.get('user','')
password = request.POST.get('password','')
print username, password
aaa.login(username=username, password=password, success_redirect='/', fail_redirect='/login')
@route('/')
def home():
aaa.require(role='admin', fail_redirect='/login')
return 'welcome'
run(app=app, host='0.0.0.0', port=8888)
|