Skip to main content

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

  1. A Firebase project
  2. Firebase service account credentials (as a JSON file or dictionary)
    • Go to Firebase Console
    • Project Settings > Service Accounts
    • Generate New Private Key
  3. 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:

  1. Using the configure function:
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"
)
  1. 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 file
  • firebase_credentials_dict: Dictionary containing Firebase credentials
  • firebase_app_name: Optional name for the Firebase app instance

Stripe Configuration

  • stripe_api_key: Your Stripe API key
  • stripe_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

user_management-0.4.1.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

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

user_management-0.4.1-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

Details for the file user_management-0.4.1.tar.gz.

File metadata

  • Download URL: user_management-0.4.1.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for user_management-0.4.1.tar.gz
Algorithm Hash digest
SHA256 769ca494d8a8fdbdc934972006fcda11b005a5d9ef1cb86e19b73fe75c1212c9
MD5 515f3d92e6161018f727441c64eb1ade
BLAKE2b-256 0b32abc0e1694b6bca2bd5348ad0634612a90d0a510f427d33d609426932d1a9

See more details on using hashes here.

File details

Details for the file user_management-0.4.1-py3-none-any.whl.

File metadata

File hashes

Hashes for user_management-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2b72c320731fb124bb340b119c484da419deaa57b6d2ca7844901b0d0910a4ca
MD5 efc9098af96252b9b866ae198491bc47
BLAKE2b-256 ea22801f4d2f9e1769d31b872e5255b11075ef346593280eefe07b94963b2365

See more details on using hashes here.

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