Skip to main content

Mixin that adds useful password methods to your Python objects

Project description

Upload Python Package Python package

Password Mixin

Mixin that adds some useful methods to ORM objects

Compatible with Python 3.5 >= 3.9

Install

pip install password-mixin

Setup

first create your objects (or ORM model) and add a __hash_secret__ meta field. Assign your application's secret value to __hash_secret__.

from password_mixin import PasswordMixin
from sqlalchemy import Model # or Django , Flask-Sqlalchemy... etc.

class UserModel(OrmModel, PasswordMixin):

    password = Column(String()) # you must have a `password`.


    # Now create a meta field to define the secret used to create the salt, for example:
    __hash_secret__ = "your-app-secret"

Usage

The password is saved as the following: "<hash_name>:<hash>"

Password Hashing

from password_mixin import PasswordAttributeError
try:
    user = UserModel()
    user.password = "wizard123"
    user.hash_password() # password is now `sha256:7ac5cf88e8c9d262b49af168d9c30e47f2945cc9c207f20af0a39f09aa04595e`
    # Now you can save your user to your db etc.
except PasswordAttributeError:
    # handle no password attribute

Validating Passwords

from password_mixin import PasswordMatchError

try:
    user.check_password("wizard111")
except PasswordMatchError:
     # handle passwords don't match

Example with Flask & Flask-Sqlalchemy

class UserModel(db.Model, PasswordMixin):

    __tablename__ = "users"
    __hash_secret__ = "wizard123"

    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(100), nullable=False)
    password = db.Column(db.String(100), nullable=False)

    def create_user(self):
        self.hash_password()
        db.session.add(self)

Now, with the above setup you can run the following

u = UserModel(email="test1@test.com", password="wizard123")
u.create_user()
db.session.commit()

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

password-mixin-0.1.3.tar.gz (3.7 kB view details)

Uploaded Source

Built Distribution

password_mixin-0.1.3-py3-none-any.whl (4.1 kB view details)

Uploaded Python 3

File details

Details for the file password-mixin-0.1.3.tar.gz.

File metadata

  • Download URL: password-mixin-0.1.3.tar.gz
  • Upload date:
  • Size: 3.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.4.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

File hashes

Hashes for password-mixin-0.1.3.tar.gz
Algorithm Hash digest
SHA256 d611a663abc5f5b62c86a95b6c992b0cdad842722f2f34bcc6a50b57066ef1a1
MD5 7cdf2169310ae485ed07df2fec988309
BLAKE2b-256 634a62f9e4ba9f5c31d7ef7362e1e23e22c412f98d27387ad0e2f406aa0e0955

See more details on using hashes here.

File details

Details for the file password_mixin-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: password_mixin-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 4.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.4.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

File hashes

Hashes for password_mixin-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 85fd4679ff15fc6421aa844c3ca6b51c45d1dc587ff810b8843df20f8f9c768e
MD5 3eb43fdb09908d4bc450e16e15b1aec2
BLAKE2b-256 ceccf6ceb838e6e433f0742d42dbd760f8cda8433261977e6812af68278d40c7

See more details on using hashes here.

Supported by

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