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 Application
from tremolo_login import Session
app = Application()
# this is a session middleware
# that enables you to use request.ctx.session
Session(app, expires=1800)
@app.route('/')
async def index(request, **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, **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, response, **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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tremolo_login-1.0.11.tar.gz.
File metadata
- Download URL: tremolo_login-1.0.11.tar.gz
- Upload date:
- Size: 5.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c37592681b208703f1f01b8167906845cd80dcb3c31aa578dcc62d8afc0bff58
|
|
| MD5 |
2678891e42195f3344b5ad29f4053583
|
|
| BLAKE2b-256 |
117aa95c32c1eefa9b76d41b0aaa6f95eb19387b043e77163f1414acc400ffa9
|
File details
Details for the file tremolo_login-1.0.11-py3-none-any.whl.
File metadata
- Download URL: tremolo_login-1.0.11-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc31ef660d197eacf71b204b36deb444b416b4d26397c258b71d054d51751652
|
|
| MD5 |
9e80ac60f56dfdfa509f2694ad37bac0
|
|
| BLAKE2b-256 |
cc831731929a04cd0ff1af297bda90f1d5c5c8310a5f631aa51033521ed3c85c
|