<?php

namespace SilverStripe\Control\Tests\RequestHandlingTest;

use SilverStripe\Control\Controller;
use SilverStripe\Dev\TestOnly;

/**
 * Controller for the test
 */
class AllowedController extends Controller implements TestOnly
{
    private static $url_segment = 'AllowedController';

    private static $url_handlers = [
        // The double-slash is need here to ensure that
        '$Action//$ID/$OtherID' => "handleAction",
    ];

    private static $allowed_actions = [
        'failoverMethod', // part of the failover object
        'blockMethod' => '->provideAccess(false)',
        'allowMethod' => '->provideAccess',
    ];

    private static $extensions = [
        ControllerExtension::class,
        AllowedControllerExtension::class,
    ];

    public function __construct()
    {
        $this->failover = new ControllerFailover();
        parent::__construct();
    }

    public function index($request)
    {
        return "This is the controller";
    }

    function provideAccess($access = true)
    {
        return $access;
    }

    function blockMethod($request)
    {
        return 'blockMethod';
    }

    function allowMethod($request)
    {
        return 'allowMethod';
    }
}