Skip to main content
https://travis-ci.org/charlesthomas/moth.png?branch=master

Moth was conceived to be used as an email-only authentication scheme (mail auth -> mauth -> moth), however, it is generic enough to be used for pretty much any token-based authentication.

Synchronous vs. Asynchronous

To create a synchronous moth object:

from moth import Moth
moth_object = Moth()

To create an asynchronous moth object:

from moth import AsyncMoth
moth_object = AsyncMoth()

All method calls are supported and identically named in Moth vs. AsyncMoth. For the rest of this README, Moth will refer to both Moth and AsyncMoth unless stated otherwise.

Initialization

Initiating Moth takes the credentials for creating a connection to MongoDB, as well as the database name (which defaults to “moth”).

AsyncMoth.__init__() blocks while creating a connection. It is the only method which does so. It is recommended that you initialize AsyncMoth as part of your tornado server’s startup.

Creating Tokens

Calling moth.create_token() generates a random token and stores it along with email address and optional IP address, expiration (in days), and retval. The method returns the token.

Authenticating Tokens

Calling moth.auth_token() queries mongo for the passed email/token combination. If IP address is in the record returned from mongo, it is validated. If expiration is returned, it is compared to datetime.now()

If either IP address or expiration fails to validate, the token will be deleted.

If the token validates, retval is queried. If a retval exists, it is returned. If it doesn’t, moth.auth_token() returns True.

Additional Methods

All other methods are fairly self explanatory, and/or mostly for internal purposes. Read the code to figure out how it works.

What is retval?

retval is the value that will be returned when moth.auth_token() is successful. It is completely optional. If you don’t pass a retval to moth.create_token(), and don’t call moth.set_retval(), then moth.auth_token() will return True on successful calls.

Why use it?

For the project I’m working on which lead to the creation of Moth, retval is an OAuth token. When I call moth.auth_token(), I validate the moth token, which gives me the user’s OAuth token for making API calls.

Requirements

Moth requires Motor, as well as Tornado and Pymongo (which are both installed via Motor).

Examples

Examples can be found on ReadTheDocs

Metadata

Release files for moth 2.1.1

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

Source distribution (sdist)

Source distribution for moth 2.1.1
File Size Uploaded Provenance
moth-2.1.1.tar.gz 5.4 kB Without provenance Details

Release files / moth-2.1.1.tar.gz

Download URL moth-2.1.1.tar.gz
Size 5.4 kB
Tags Source
SHA-256 checksum
How to use checksums
29e9cd6b735e99d658f2b6377193e985adb4785eeb407f38301fbbc349dc37bc
BLAKE2b-256 checksum
How to use checksums
25309760875c4803fba53389dc9554d9ec02b97cb85d826858417da75ababa09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for moth 2.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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