Skip to main content

tremolo-login is basically an extension of tremolo-session.

Project description

tremolo-login

Coverage Quality Gate Status

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


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.11.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tremolo_login-1.0.11-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

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

Hashes for tremolo_login-1.0.11.tar.gz
Algorithm Hash digest
SHA256 c37592681b208703f1f01b8167906845cd80dcb3c31aa578dcc62d8afc0bff58
MD5 2678891e42195f3344b5ad29f4053583
BLAKE2b-256 117aa95c32c1eefa9b76d41b0aaa6f95eb19387b043e77163f1414acc400ffa9

See more details on using hashes here.

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

Hashes for tremolo_login-1.0.11-py3-none-any.whl
Algorithm Hash digest
SHA256 cc31ef660d197eacf71b204b36deb444b416b4d26397c258b71d054d51751652
MD5 9e80ac60f56dfdfa509f2694ad37bac0
BLAKE2b-256 cc831731929a04cd0ff1af297bda90f1d5c5c8310a5f631aa51033521ed3c85c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page