Skip to main content

A user authentication and verification system using MongoDB.

Project description

easy_mongodb_auth_handler

A user authentication and verification system using MongoDB, supporting email-based verification, password hashing, and reset mechanisms.

Installation

pip install easy-mongodb-auth-handler

Setup

Make sure you have MongoDB installed and running. You also need access to an SMTP mail server for sending verification and reset codes.

Project Structure

easy_mongodb_auth_handler/
├── setup.py
├── src/
│   └── easy_mongodb_auth_handler/
│       ├── __init__.py
│       ├── auth.py
│       └── utils.py

Features

  • User registration with and without email verification
  • Email format validation
  • Secure password hashing with bcrypt
  • User login/authentication
  • Password reset via email verification
  • MongoDB-based user data persistence

Usage

from easy_mongodb_auth_handler import Auth

auth = Auth(
    mongo_uri="mongodb://localhost:27017",
    db_name="mydb",
    mail_info={
        mail_server="smtp.example.com",
        mail_port=587,
        mail_username="your_email@example.com",
        mail_password="your_email_password"
    }, # Optional: Include if using email verification
    blocking=True/False  # Optional: True to enable user blocking
)

This code initializes the package. The mail arguments are not required, but needed to use verification code functionality. The blocking argument is optional and defaults to True. If set to True, it enables user blocking functionality. All methods return True or False with additional detailed outcome reports.

Function Reference - auth.example_func(args)

All functions return a dictionary: {"success": True/False, "message": "specific message"}.

User Registration & Verification

  • register_user(email, password, custom_data=False)

    • Registers a user and sends a verification code via email.
    • Parameters:
      • email (str): User's email address.
      • password (str): User's password.
      • custom_data (any, optional): Additional user info to store.
  • register_user_no_verif(email, password, custom_data=False)

    • Registers a user without email verification.
    • Parameters:
      • email (str): User's email address.
      • password (str): User's password.
      • custom_data (any, optional): Additional user info to store.
  • verify_user(email, code)

    • Verifies a user by checking the provided verification code.
    • Parameters:
      • email (str): User's email address.
      • code (str): Verification code sent to the user.

Authentication

  • authenticate_user(email, password)
    • Authenticates a user. Requires the user to be verified.
    • Parameters:
      • email (str): User's email address.
      • password (str): User's password.

Password Management

  • reset_password_no_verif(email, old_password, new_password)

    • Resets the user's password after verifying the old password. No email code required.
    • Parameters:
      • email (str): User's email address.
      • old_password (str): User's current password.
      • new_password (str): New password to set.
  • generate_reset_code(email)

    • Generates and emails a password reset code to the user.
    • Parameters:
      • email (str): User's email address.
  • verify_reset_code_and_reset_password(email, reset_code, new_password)

    • Verifies a password reset code and resets the user's password.
    • Parameters:
      • email (str): User's email address.
      • reset_code (str): Code sent to the user's email.
      • new_password (str): New password to set.

User Deletion & Blocking

When a user is blocked, they cannot log in or perform any actions that require authentication.

  • delete_user(email, password, del_from_blocking=True)

    • Deletes a user from the database if credentials match. If del_from_blocking is True, also removes from the blocking database.
    • Parameters:
      • email (str): User's email address.
      • password (str): User's password.
      • del_from_blocking (bool, optional): Also remove from blocking database (default: True).
  • block_user(email)

    • Blocks a user by setting their status to "blocked".
    • Parameters:
      • email (str): User's email address.
  • unblock_user(email)

    • Unblocks a user.
    • Parameters:
      • email (str): User's email address.
  • is_blocked(email)

    • Checks if a user is blocked.
    • Parameters:
      • email (str): User's email address.
  • is_verified(email)

    • Checks if a user is verified.
    • Parameters:
      • email (str): User's email address.

Custom User Data

Custom user data is a flexible field that can store any type of data. It is stored alongside the normal user data. Store all custom data in a dictionary format for more storage and to use the 2nd and 4th functions in the section below.

  • get_cust_usr_data(email)

    • Retrieves all custom user data for the user.
    • Parameters:
      • email (str): User's email address.
  • get_some_cust_usr_data(email, field)

    • Retrieves a specific dictionary entry from the user's custom data.
    • Parameters:
      • email (str): User's email address.
      • field (str): Dictionary name to retrieve.
  • replace_usr_data(email, custom_data)

    • Replaces the user's custom data with new data.
    • Parameters:
      • email (str): User's email address.
      • custom_data (any): New custom data to store.
  • update_usr_data(email, field, custom_data)

    • Updates a specific dictionary entry in the user's custom data.
    • Parameters:
      • email (str): User's email address.
      • field (str): Dictionary name to update.
      • custom_data (any): New value for the field.

Requirements

  • Python >= 3.8
  • pymongo >= 4.0.0
  • bcrypt >= 4.0.0

License

GNU Affero General Public License v3

Author

Lukbrew25

...and all future contributors!

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

easy_mongodb_auth_handler-1.0.6.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

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

easy_mongodb_auth_handler-1.0.6-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

Details for the file easy_mongodb_auth_handler-1.0.6.tar.gz.

File metadata

File hashes

Hashes for easy_mongodb_auth_handler-1.0.6.tar.gz
Algorithm Hash digest
SHA256 2baf305c9af61b5efc30fad226c00712f84baf11fc2f82b528f5fb052be1543d
MD5 fff42cfefe73717b2de78e438adecb60
BLAKE2b-256 6e464c12ef88179b27bd06c07b78cc90c30365303df8d4c3d8932928ac8a8762

See more details on using hashes here.

Provenance

The following attestation bundles were made for easy_mongodb_auth_handler-1.0.6.tar.gz:

Publisher: python-publish.yml on lukbrew25/easy-mongodb-auth-handler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file easy_mongodb_auth_handler-1.0.6-py3-none-any.whl.

File metadata

File hashes

Hashes for easy_mongodb_auth_handler-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 32fda0fa91bb1b82cfa060207423de0c69358ca1c219f6a6117952641bfb11c9
MD5 089ad48b4cc5e9b0c99f1ace6c491166
BLAKE2b-256 cdd17a439d32807203025676b4d9ea92a0820e080b0ed5bcfb5e3d45d4eab221

See more details on using hashes here.

Provenance

The following attestation bundles were made for easy_mongodb_auth_handler-1.0.6-py3-none-any.whl:

Publisher: python-publish.yml on lukbrew25/easy-mongodb-auth-handler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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