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_blockingisTrue, 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).
- Deletes a user from the database if credentials match. If
-
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file easy_mongodb_auth_handler-1.0.6.tar.gz.
File metadata
- Download URL: easy_mongodb_auth_handler-1.0.6.tar.gz
- Upload date:
- Size: 20.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2baf305c9af61b5efc30fad226c00712f84baf11fc2f82b528f5fb052be1543d
|
|
| MD5 |
fff42cfefe73717b2de78e438adecb60
|
|
| BLAKE2b-256 |
6e464c12ef88179b27bd06c07b78cc90c30365303df8d4c3d8932928ac8a8762
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
easy_mongodb_auth_handler-1.0.6.tar.gz -
Subject digest:
2baf305c9af61b5efc30fad226c00712f84baf11fc2f82b528f5fb052be1543d - Sigstore transparency entry: 219630795
- Sigstore integration time:
-
Permalink:
lukbrew25/easy-mongodb-auth-handler@ceefb353365c72b35cee8f876b0526274f2d49a2 -
Branch / Tag:
refs/tags/v1.0.6 - Owner: https://github.com/lukbrew25
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@ceefb353365c72b35cee8f876b0526274f2d49a2 -
Trigger Event:
release
-
Statement type:
File details
Details for the file easy_mongodb_auth_handler-1.0.6-py3-none-any.whl.
File metadata
- Download URL: easy_mongodb_auth_handler-1.0.6-py3-none-any.whl
- Upload date:
- Size: 19.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32fda0fa91bb1b82cfa060207423de0c69358ca1c219f6a6117952641bfb11c9
|
|
| MD5 |
089ad48b4cc5e9b0c99f1ace6c491166
|
|
| BLAKE2b-256 |
cdd17a439d32807203025676b4d9ea92a0820e080b0ed5bcfb5e3d45d4eab221
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
easy_mongodb_auth_handler-1.0.6-py3-none-any.whl -
Subject digest:
32fda0fa91bb1b82cfa060207423de0c69358ca1c219f6a6117952641bfb11c9 - Sigstore transparency entry: 219630798
- Sigstore integration time:
-
Permalink:
lukbrew25/easy-mongodb-auth-handler@ceefb353365c72b35cee8f876b0526274f2d49a2 -
Branch / Tag:
refs/tags/v1.0.6 - Owner: https://github.com/lukbrew25
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@ceefb353365c72b35cee8f876b0526274f2d49a2 -
Trigger Event:
release
-
Statement type: