tac.core.card_manager v1.0.1

Provides consistent card creation, validation, and management APIs. Handles standard card creation, subscription cards with expiration, card renewal, and card information queries.

Author: Twijn • License: MIT
View on GitHub →

Examples

-- In your extension:
function MyExtension.init(tac)
    -- Create a simple card
    local card, err = tac.cardManager.createCard({
        name = "John Doe",
        tags = {"tenant.1", "vip"}
    })
    
    -- Create a subscription card
    local subCard, err = tac.cardManager.createSubscriptionCard({
        username = "player1",
        duration = 30,
        slot = "tenant.premium"
    })
    
    -- Renew a card
    tac.cardManager.renewCard("tenant_1_player1", 30)
    
    -- Get card info
    local info, err = tac.cardManager.getCardInfo("tenant_1_player1")
    if info then
        print("Card expires in " .. (info.timeUntilExpiration / 86400000) .. " days")
    end
end

Functions

MyExtension.init()

View source

In your extension:

cardManager.createCard(options)

View source

Create a new card with standard validation and logging Creates a card with the provided options, validates the data, saves it, and logs the creation event. Auto-generates a card ID if not provided. - id (string, optional): Card ID (auto-generated if not provided) - name (string, required): Display name for the card - tags (table, required): Array of access tags - expiration (number, optional): UTC epoch timestamp when card expires - username (string, optional): Username associated with card (used in ID generation) - prefix (string, optional): Prefix for auto-generated ID - createdBy (string, optional): Who/what created the card (default: "system") - metadata (table, optional): Additional custom data - logMessage (string, optional): Custom log message

Parameters:
Returns: string|nil Error message if creation failed

cardManager.createSubscriptionCard(options)

View source

Create a subscription card (with expiration) Specialized function for creating time-limited subscription cards. Commonly used by ShopK integration for selling temporary access. - username (string, required): Username of the subscriber - duration (number, required): Subscription duration in days - slot (string, required): Access level/slot (becomes the card tag) - createdBy (string, optional): Creator identifier (default: "shopk") - purchaseValue (number, optional): Purchase price for metadata - transactionId (string, optional): Transaction ID for metadata - logMessage (string, optional): Custom log message

Parameters:
Returns: string|nil Error message if creation failed

cardManager.renewCard(cardId, additionalDuration, options)

View source

Renew an existing card Extends the expiration date of an existing card by the specified duration. Updates renewal metadata and logs the renewal event. - renewedBy (string, optional): Who renewed the card (default: "system") - transactionId (string, optional): Transaction ID for metadata - logMessage (string, optional): Custom log message

Parameters:
Returns: string|nil Error message if renewal failed

cardManager.getCardInfo(cardId)

View source

Get card status and info Retrieves comprehensive information about a card including expiration status. Returns structured data with calculated fields like isExpired and timeUntilExpiration. - id (string): Card ID - name (string): Card display name - tags (table): Access tags array - created (number): Creation timestamp - createdBy (string): Creator identifier - isExpired (boolean): Whether card is currently expired - timeUntilExpiration (number|nil): Milliseconds until expiration (nil if no expiration) - expiration (number|nil): Expiration timestamp if set - metadata (table): Custom metadata

Parameters:
Returns: string|nil Error message if card not found

cardManager.isValidCardId(cardId)

View source

Validate card ID format Checks if a card ID meets basic format requirements (non-empty string).

Parameters:
Returns: boolean True if valid card ID format