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",
    customer_table_name="custom_customers",
    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.customer_table_name = "custom_customers"

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")
  • customer_table_name: Name of the customers table (default: "customers")
  • 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 Customers

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.5.2.tar.gz (14.0 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.5.2-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: user_management-0.5.2.tar.gz
  • Upload date:
  • Size: 14.0 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.5.2.tar.gz
Algorithm Hash digest
SHA256 64ffb5535f31bd1b3d3e58f4e35298007664314e60df0c3b2faad3767059a482
MD5 5f9f0fc7208dbd46eac0effe241316e2
BLAKE2b-256 a32394ca7df16b45db2b0fc9746c458fd2827fabe572c935a4a2a18ca77f7b9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for user_management-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4a0089e0fd35ee5044ad274bf250f487e7affd917f7309989550b3e8ebf00ced
MD5 de5d3c56c922d1231a3a2a995ce036d6
BLAKE2b-256 d89031e622678a59270e228c966f9413c62a8a458fad92b04c1e40ed90ad7e39

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