A user management package using Firebase
Project description
User Management
A Python package for managing user-related operations using Firebase Authentication.
Installation
You can install the package using pip:
pip install user-management
Prerequisites
- A Firebase project
- Firebase service account credentials (as a JSON file or dictionary)
- Go to Firebase Console
- Project Settings > Service Accounts
- Generate New Private Key
- Stripe API key (if using Stripe integration)
Configuration
The package provides a global configuration system that allows you to customize various settings in one place. You can configure settings in two ways:
- Using the
configurefunction:
import user_management
user_management.configure(
# Firebase configurations
firebase_credentials_path="path/to/firebase-credentials.json",
# OR
firebase_credentials_dict={
"type": "service_account",
"project_id": "your-project-id",
...
},
firebase_app_name="your-app-name", # Optional
# Stripe configurations
stripe_api_key="your-stripe-api-key",
stripe_api_version="2023-10-16", # Optional
stripe_webhook_secret="your-webhook-secret", # Optional
# Database table names
user_table_name="custom_users",
organization_table_name="custom_orgs",
subscription_table_name="custom_subscriptions"
)
- Directly through the config object:
from user_management import config
# Firebase configurations
config.firebase_credentials_path = "path/to/firebase-credentials.json"
config.firebase_app_name = "your-app-name"
# Stripe configurations
config.stripe_api_key = "your-stripe-api-key"
# Database table names
config.user_table_name = "custom_users"
config.organization_table_name = "custom_orgs"
Available Configuration Options
Firebase Configuration
firebase_credentials_path: Path to Firebase service account credentials JSON filefirebase_credentials_dict: Dictionary containing Firebase credentialsfirebase_app_name: Optional name for the Firebase app instance
Stripe Configuration
stripe_api_key: Your Stripe API keystripe_api_version: Stripe API version to use (default: "2023-10-16")stripe_webhook_secret: Your Stripe webhook secret for verifying webhooks
Database Table Names
user_table_name: Name of the users table (default: "users")organization_table_name: Name of the organizations table (default: "organizations")subscription_table_name: Name of the subscriptions table (default: "subscriptions")
You can also add custom configuration options which will be stored in the custom_settings dictionary:
user_management.configure(
custom_setting_1="value1",
custom_setting_2="value2"
)
# Access custom settings
value = config.get("custom_setting_1", default="default_value")
Usage
Firebase Authentication
from user_management import FirebaseClient
# Initialize client using configuration (recommended)
client = FirebaseClient()
# Or provide credentials directly
client = FirebaseClient("path/to/firebase-credentials.json")
# Create a new user
user = client.create_user(
email="user@example.com",
password="securepassword123",
display_name="John Doe"
)
Stripe Integration
from user_management import StripeClient
# Initialize client using configuration (recommended)
client = StripeClient()
# Or provide API key directly
client = StripeClient(api_key="your-stripe-api-key")
# Create a new customer
customer = client.create_customer(
email="customer@example.com",
name="John Doe"
)
User Profiles and Organizations
from user_management import UserProfileClient, CustomerClient
# Initialize clients using configuration (recommended)
user_client = UserProfileClient()
org_client = CustomerClient()
# Create user profile
user = user_client.create_user(
email="user@example.com",
name="John Doe"
)
# Create organization
org = org_client.create_customer(
name="Acme Corp",
subscription_id="stripe_subscription_id",
users=[user["id"]],
is_org=True
)
Features
- User creation and management
- User information retrieval and updates
- Custom claims management
- JWT token verification
- Type-safe with Pydantic models
- Full Firebase Authentication integration
- Flexible initialization with file path or credentials dictionary
- Strong type hints and documentation
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
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 user_management-0.4.3.tar.gz.
File metadata
- Download URL: user_management-0.4.3.tar.gz
- Upload date:
- Size: 14.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8329612d8613fa5c8cc574bccfa15ff50ee878eae3a203606bd210b76a6e2a2c
|
|
| MD5 |
6d0a2f1b347d72e8b683e09c661595e5
|
|
| BLAKE2b-256 |
135671bbb17a1a823805242b0f292af15a1cd2b9ea86ed9d1d810f9a02341401
|
File details
Details for the file user_management-0.4.3-py3-none-any.whl.
File metadata
- Download URL: user_management-0.4.3-py3-none-any.whl
- Upload date:
- Size: 21.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dcdd699ceeb0676a3e4f243b17aebb2dbc6e75317de77531bbbddf74d3c4bfa6
|
|
| MD5 |
d751066a018bec2f6437541772540fcc
|
|
| BLAKE2b-256 |
17980a680b6261cd43d2dc4a7f68d41e99321d5210b0e14a1c24b7e090680c47
|