tremolo-login is basically an extension of tremolo-session.
Project description
tremolo-login
tremolo-login is basically an extension of tremolo-session.
You can use it just like tremolo-session but with additional methods like login()
, logout()
, and is_logged_in()
.
Usage
#!/usr/bin/env python3
from hmac import compare_digest
from tremolo import Tremolo
from tremolo_login import Session
app = Tremolo()
# this is a session middleware
# that enables you to use context.session or request.ctx.session
Session(app, expires=1800)
@app.route('/')
async def index(request=None, **server):
session = request.ctx.session
if session is None or not session.is_logged_in():
return b'You are not logged in. <a href="/login">Login</a>.'
return b'Welcome to Dashboard. <a href="/logout">Logout</a>.'
@app.route('/login')
async def login(request=None, **server):
session = request.ctx.session
if request.method == b'POST':
form_data = await request.form()
if ('password' in form_data and
compare_digest(form_data['password'][0], 'mypass')):
# password match! set current session as logged in
session.login()
return b'Login success! Go to <a href="/">Dashboard</a>.'
return (b'<form action="/login" method="post"><div>'
b'<label for="password">Password:</label> '
b'<input type="text" name="password" placeholder="mypass" /> '
b'<input type="submit" value="Login" /></div>'
b'</form>')
@app.route('/logout')
async def logout(request=None, response=None, **server):
session = request.ctx.session
session.logout()
response.set_status(302, b'Found')
response.set_header(b'Location', b'/')
return b''
if __name__ == '__main__':
app.run('0.0.0.0', 8000, debug=True, reload=True)
Installing
python3 -m pip install --upgrade tremolo_login
Testing
Just run python3 -m tests
.
Or if you also want measurements with coverage:
coverage run -m tests
coverage combine
coverage report
coverage html # to generate html reports
License
MIT License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
tremolo-login-1.0.7.tar.gz
(3.4 kB
view hashes)
Built Distribution
Close
Hashes for tremolo_login-1.0.7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c8f23c894a0e61f0082c4e1a955c7a7af71359f40ef9d2a8ef2efe2307be81e |
|
MD5 | b0d1776e504126398455033b96a87641 |
|
BLAKE2b-256 | a15401e0bbfafcac321db5a4a1ffc419ca703ddd78facb8477d68807f98ffbfe |