Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- Simple login/logout mechanism using cookies with Bottle framework
- :author: Suresh K L <suresh1591@gmail.com>
- """
- import os
- from bottle import request, response, template, Bottle, abort, run, redirect
- app = Bottle()
- secret = os.urandom(10)
- ##############################################################################
- # TEMPLATES
- ##############################################################################
- login_page = '''
- <form action="/login" method="POST">
- Username: <input type="text" name="username"><br>
- Password: <input type="password" name="password"><br>
- <input type="submit" name="submit" value="Submit">
- </form>
- '''
- welcome_page = '''
- <h1>Welcome {{ user }}</h1>
- <form action="/logout" method="GET">
- <input type="submit" name="logout" value="Logout">
- </form>
- '''
- page_not_found = '''
- <h1>Requested page not found, please check the URL</h1>
- '''
- ##############################################################################
- # VIEWS
- ##############################################################################
- @app.error(404)
- def error404(error):
- return template(page_not_found)
- @app.get('/')
- def home():
- loggedin = request.get_cookie('loggedin', secret=secret)
- if loggedin:
- username = request.get_cookie('username')
- return template(welcome_page, user=username)
- else:
- return template(login_page)
- @app.post('/login')
- def login():
- username = request.forms.get('username')
- password = request.forms.get('password')
- if username == 'admin' and password == 'admin':
- response.set_cookie('loggedin', True, secret=secret)
- response.set_cookie('username', username)
- return template(welcome_page, user=username)
- else:
- abort(401, 'Unauthorized')
- @app.get('/logout')
- def logout():
- loggedin = request.get_cookie('loggedin', secret=secret)
- if loggedin:
- response.set_cookie('loggedin', False, secret=secret)
- redirect('/')
- ##############################################################################
- if __name__ == '__main__':
- run(app, debug=True, reloader=True)
Add Comment
Please, Sign In to add comment