<?php

namespace App\Support\Auth;

/**
 * Platform Capability Registry
 *
 * These capabilities are used for platform operators authenticated via the
 * `platform` guard (System panel).
 */
class PlatformCapabilities
{
    public const ACCESS_SYSTEM_PANEL = 'platform.access_system_panel';

    public const USE_BREAK_GLASS = 'platform.use_break_glass';

    public const CONSOLE_VIEW = 'platform.console.view';

    public const DIRECTORY_VIEW = 'platform.directory.view';

    public const DIRECTORY_MANAGE = 'platform.directory.manage';

    public const COMMERCIAL_LIFECYCLE_MANAGE = 'platform.commercial_lifecycle.manage';

    public const SUPPORT_ACCESS_MANAGE = 'platform.support_access.manage';

    public const OPERATIONS_VIEW = 'platform.operations.view';

    public const OPERATIONS_MANAGE = 'platform.operations.manage';

    public const OPS_VIEW = 'platform.ops.view';

    public const RUNBOOKS_VIEW = 'platform.runbooks.view';

    public const RUNBOOKS_RUN = 'platform.runbooks.run';

    public const OPS_CONTROLS_MANAGE = 'platform.ops.controls.manage';

    /**
     * @return array<string>
     */
    public static function all(): array
    {
        $reflection = new \ReflectionClass(self::class);

        return array_values($reflection->getConstants());
    }
}
