Skip to main content
The CampaignAccessChecker is an abstract utility contract that provides campaign-specific access control. It extends admin access control with campaign owner permissions.

Overview

Purpose

  • Campaign Owner Access: Restricts functions to campaign owners
  • Protocol Admin Access: Restricts functions to protocol administrators
  • Platform Admin Access: Restricts functions to platform-specific admins
  • Campaign-Specific: Uses ICampaignInfo for campaign context
  • Reusable: Can be inherited by treasury and other campaign contracts

State Variables

Functions

Initialization

Init Campaign Access Checker

Parameters:
  • campaignInfo: CampaignInfo contract address
Effects:
  • Stores reference to CampaignInfo
  • Enables access control checks
Called by:
  • BaseTreasury and derived contracts
  • Any contract needing campaign access control

Modifiers

Only Campaign Owner

Effect:
  • Restricts function to campaign owner only
  • Reverts with AccessCheckerUnauthorized if caller is not owner
Usage:

Only Protocol Admin

Effect:
  • Restricts function to protocol admin only
  • Queries CampaignInfo for protocol admin address

Only Platform Admin

Parameters:
  • platformHash: Platform identifier
Effect:
  • Restricts function to specific platform’s admin
  • Queries CampaignInfo for platform admin address

Errors

AccessCheckerUnauthorized

Thrown when: Caller is not authorized Conditions:
  • Not campaign owner when onlyCampaignOwner used
  • Not protocol admin when onlyProtocolAdmin used
  • Not platform admin when onlyPlatformAdmin used

Usage Examples

Inheriting the Contract

Campaign Owner Functions

Access Control Hierarchy

Integration

With BaseTreasury

With CampaignInfo

Security Considerations

Campaign-Scoped Access

  • Access control is scoped to specific campaign
  • Campaign owner cannot access other campaigns
  • Platform admin scoped to their platform

Ownership Transfer

  • Campaign ownership can be transferred
  • New owner inherits all permissions
  • Previous owner loses access

Admin Separation

  • Protocol admin ≠ Platform admin ≠ Campaign owner
  • Clear separation of responsibilities
  • No overlap in permissions

Best Practices

Check Ownership Before Operations

Error Handling

Next Steps