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
| Variable | Type | Description |
|---|---|---|
INFO | ICampaignInfo | Reference to campaign info contract |
Functions
Initialization
Init Campaign Access Checker
campaignInfo: CampaignInfo contract address
- Stores reference to CampaignInfo
- Enables access control checks
- BaseTreasury and derived contracts
- Any contract needing campaign access control
Modifiers
Only Campaign Owner
- Restricts function to campaign owner only
- Reverts with
AccessCheckerUnauthorizedif caller is not owner
Only Protocol Admin
- Restricts function to protocol admin only
- Queries CampaignInfo for protocol admin address
Only Platform Admin
platformHash: Platform identifier
- Restricts function to specific platform’s admin
- Queries CampaignInfo for platform admin address
Errors
AccessCheckerUnauthorized
- Not campaign owner when
onlyCampaignOwnerused - Not protocol admin when
onlyProtocolAdminused - Not platform admin when
onlyPlatformAdminused
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
- AdminAccessChecker - Protocol-level access control
- PausableCancellable - State management utilities
- BaseTreasury - Uses campaign access control