Skip to the content.

← Back to Awards Plugin

5.2.10 EventsTable Policy Reference

Last Updated: December 4, 2025
Status: Complete
Plugin: Awards
Source: plugins/Awards/src/Policy/EventsTablePolicy.php

Overview

The EventsTablePolicy class provides table-level authorization for award event management within the Awards plugin. It manages temporal event data access, bulk operations, and administrative oversight through integration with the KMP RBAC system.

Class Definition

namespace Awards\Policy;

class EventsTablePolicy extends BasePolicy

All authorization methods are inherited from BasePolicy and delegate to the centralized _hasPolicy() method for consistent RBAC integration.

RBAC Integration Architecture

Permission-Based Authorization

BasePolicy Inheritance

The policy inherits standard table authorization methods:

Method Purpose
canIndex() Event listing with organizational and temporal scoping
canAdd() Event creation with administrative permission requirements
scopeIndex() Query scoping for branch-based access control

Table Operations Governance

Authorization is enforced for all table-level operations:

Operation Authorization Requirements
Query Authorization Permission validation for event listing and temporal data retrieval
Temporal Management Access control for date-based queries and event lifecycle operations
Structural Modifications Administrative permissions for bulk event operations
Administrative Access Elevated access for comprehensive event management

Query Scoping

The policy implements query filtering through BasePolicy:

Authorization Flow

sequenceDiagram
    participant Controller
    participant Authorization
    participant EventsTablePolicy
    participant BasePolicy
    participant PermissionsLoader
    
    Controller->>Authorization: authorize($eventsTable, 'index')
    Authorization->>EventsTablePolicy: canIndex($user, $table)
    EventsTablePolicy->>BasePolicy: _hasPolicy()
    BasePolicy->>BasePolicy: before() - Super User Check
    BasePolicy->>PermissionsLoader: Resolve Permissions
    PermissionsLoader-->>BasePolicy: Permission Result
    BasePolicy-->>EventsTablePolicy: Authorization Decision
    EventsTablePolicy-->>Authorization: bool
    Authorization-->>Controller: Authorized/Denied

Usage Examples

Controller Integration

// Standard table authorization in EventsController
public function index() {
    $this->Authorization->authorize($this->Events, 'index');
    $events = $this->paginate($this->Events);
    $this->set(compact('events'));
}

Temporal Management Services

// Event management with temporal filtering
$eventsQuery = $this->Events->find()
    ->where(['open_date <=' => date('Y-m-d')])
    ->order(['open_date' => 'DESC']);
$authorizedQuery = $this->Authorization->applyScope($user, 'index', $eventsQuery);

Administrative Operations

// Administrative event creation
if ($this->Authorization->can($user, 'add', $this->Events)) {
    // Bulk event creation with temporal validation...
}

Integration Points

Events Controller Integration

RBAC System Integration

Awards Plugin Integration

Security Considerations

Access Control Security

Data Protection