Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

https://circleci.com/gh/level12/keg-login.svg?style=svg https://codecov.io/github/level12/keg-login/coverage.svg?branch=master

Base views and forms for user login and password management in Keg applications.

Usage

There are 5 base views to allow users to login, logout and set their passwords.

  • Login

  • Logout

  • ChangePassword

  • ForgotPassword

  • ResetPassword

To make use of these views in your application, subclass the appropriate view and it’s contained Responder class and implement the pure virtual methods.

You may override the templates used for these views by creating the appropriately named template under <my application>/templates/keg-login/ or overriding template in your Responder subclass

Example

from keg import Keg
from keg_login.ext import KegLogin
from keg_login import views

app = Keg(__name__)
KegLogin(app)

class ForgotPassword(views.ForgotPassword):
    class Responder(views.ForgotPassword.Responder):
        def request_password_reset(self, email):
            generate_token_and_send_email(email)

Templates

Keg-Login makes great use of a great Jinja2 feature called macros. they allows the user of Keg-Login to override just the piece of functionality or design without a lot of work. Here is how:

After install Keg-Login, create a keg-login folder in your application template folder.

Use own template

In this folder create a file called base.html

Within base.html build or extend the template you want to surround the login views. The only thing that Keg-Login expects is for base.html to expose a block main somewhere in that file. For example…

{% extends your-master-template.html %}

{# This block might be defined in your-master-template.html #}
{% block content %}
  {% block main %}{% endblock %}
{% endblock %}

Now Keg-Login will use the master template as the base for the auth views.

Override Keg-Login Form Rendering (Using the Macro System)

Create the macros.html file in app/templates/keg-login/macros.html. At first all we need to do is add

{% extends "keg-login/_macros.html" %}

The _macros.html file defines all the base/default macros for rendering the view templates. Everything in Keg-Login is a macro.

A common macro to override is the render_wrapper macro. render_wrapper and advanced feature of Jinja2 to allow the forms in Keg-Login to be “wrapped” with additional HTML. For example, if you have a bunch of extra code you want to surround the form elements with. This requires a little more explanation…

Say for example you have this master template…

<body>
  <div class="container">
    {% block container %} {% endblock %}
  </div>
</body>

You then extend this in keg-login/base.html like so…

{% extends "base.html" %}

{% block container %}
  <div class="auth-container">
    {% block main %}
    {% endblock %}
  </div>
{% endblock container %}

Without render_wrapper, that would be all the customization we could do to a form. The input tag for, say, the login form would be at body>div.container>div.auth-container>form>input(s). What if our design requires an html element between form and the form input’s? That would not be possible without overriding each form implementation (not acceptable, you might as well not use Keg-Login at that point, or create something like render_wrapper.

To use render_wrapper, in your macros.html file but this…

{% macro render_wrapper() %}
  {# the form being rendered (login/forgot password/etc) will be rendered
      whereever this is placed #}
  {{ caller() }}
{% endmacro %}

If you want to wrap the form element in a div…

{% macro render_wrapper() %}
  <div class="form-wrapper">
    {{ caller() }}
  </div>
{% endmacro %}

Now, all of the keg-login forms will get this treatment.

Development

Branches & State

  • master: our “production” branch

All other branches are feature branches.

Environment

Install requirements:

$ pip install --use-wheel --no-index --find-links=requirements/wheelhouse -r requirements/dev-env.txt $ pip install -e .

Metadata

Release files for KegLogin 0.5.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for KegLogin 0.5.4
File Size Uploaded
KegLogin-0.5.4.tar.gz 21.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for KegLogin 0.5.4
File Interpreter ABI Platform
KegLogin-0.5.4-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 47.0 kB

Release files / KegLogin-0.5.4.tar.gz

Download URL KegLogin-0.5.4.tar.gz
Size 21.4 kB
Tags Source
SHA-256 checksum
How to use checksums
1727f53047ba47fdfa9783b4e16ac2b7e8d15a9f9fb0b51742d0917d477148f4
BLAKE2b-256 checksum
How to use checksums
e66a13f585bf41366a52f4c3e9e05eec3551bc2a92b7f42c49e0e0b5029cf462
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / KegLogin-0.5.4-py2.py3-none-any.whl

Download URL KegLogin-0.5.4-py2.py3-none-any.whl
Size 25.6 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
7fa652e6a7ad5b062b305ab301f3a31a876ec9922903028d94af754416cc14f5
BLAKE2b-256 checksum
How to use checksums
5353eead14d35aa03f67188d780cb8b6a8685b701703382579b2998f53bae112
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page