putyourlightson/craft-sherlock

Undefined index: enabled after installation

Closed this issue · 3 comments

rjgux commented

Describe the bug

After installing the latest version of the plugin (3.1.1) we get the following ErrorException - Undefined index: enabled. We were previously running version 2.2 of the plugin

   /**
     * Applies header protection.
     */
    public function applyHeaderProtection()
    {
        $settings = Sherlock::$plugin->settings->headerProtectionSettings;
 
        if ($settings['enabled']) {
            foreach ($settings['headers'] as $header) {
                if ($header[0]) {
                    Craft::$app->getResponse()->getHeaders()->set(trim($header[1]), trim($header[2]));
                }
            }
        }
    

Screenshots

Screenshot 2021-03-25 at 15 04 59

Versions

  • Plugin version: 3.1.1
  • Craft version: 3.6.11.1

Full stack trace -

yii\base\ErrorException: Undefined index: enabled in /Users/rich/Sites/aub/vendor/putyourlightson/craft-sherlock/src/services/SecurityService.php:64
Stack trace:
#0 /Users/rich/Sites/aub/vendor/craftcms/cms/src/web/ErrorHandler.php(77): yii\base\ErrorHandler->handleError(8, 'Undefined index...', '/Users/rich/Sit...', 64)
#1 /Users/rich/Sites/aub/vendor/putyourlightson/craft-sherlock/src/services/SecurityService.php(64): craft\web\ErrorHandler->handleError(8, 'Undefined index...', '/Users/rich/Sit...', 64, Array)
#2 /Users/rich/Sites/aub/vendor/putyourlightson/craft-sherlock/src/Sherlock.php(83): putyourlightson\sherlock\services\SecurityService->applyHeaderProtection()
#3 /Users/rich/Sites/aub/vendor/yiisoft/yii2/base/BaseObject.php(109): putyourlightson\sherlock\Sherlock->init()
#4 /Users/rich/Sites/aub/vendor/yiisoft/yii2/base/Module.php(158): yii\base\BaseObject->__construct(Array)
#5 /Users/rich/Sites/aub/vendor/craftcms/cms/src/base/Plugin.php(115): yii\base\Module->__construct('sherlock', Object(craft\web\Application), Array)
#6 [internal function]: craft\base\Plugin->__construct('sherlock', Object(craft\web\Application), Array)
#7 /Users/rich/Sites/aub/vendor/yiisoft/yii2/di/Container.php(420): ReflectionClass->newInstanceArgs(Array)
#8 /Users/rich/Sites/aub/vendor/yiisoft/yii2/di/Container.php(171): yii\di\Container->build('putyourlightson...', Array, Array)
#9 /Users/rich/Sites/aub/vendor/yiisoft/yii2/BaseYii.php(365): yii\di\Container->get('putyourlightson...', Array, Array)
#10 /Users/rich/Sites/aub/vendor/craftcms/cms/src/services/Plugins.php(934): yii\BaseYii::createObject(Array, Array)
#11 /Users/rich/Sites/aub/vendor/craftcms/cms/src/services/Plugins.php(233): craft\services\Plugins->createPlugin('sherlock', Array)
#12 /Users/rich/Sites/aub/vendor/craftcms/cms/src/base/ApplicationTrait.php(1442): craft\services\Plugins->loadPlugins()
#13 /Users/rich/Sites/aub/vendor/craftcms/cms/src/web/Application.php(93): craft\web\Application->_postInit()
#14 /Users/rich/Sites/aub/vendor/yiisoft/yii2/base/BaseObject.php(109): craft\web\Application->init()
#15 /Users/rich/Sites/aub/vendor/yiisoft/yii2/base/Application.php(212): yii\base\BaseObject->__construct(Array)
#16 [internal function]: yii\base\Application->__construct(Array)
#17 /Users/rich/Sites/aub/vendor/yiisoft/yii2/di/Container.php(420): ReflectionClass->newInstanceArgs(Array)
#18 /Users/rich/Sites/aub/vendor/yiisoft/yii2/di/Container.php(171): yii\di\Container->build('craft\\web\\Appli...', Array, Array)
#19 /Users/rich/Sites/aub/vendor/yiisoft/yii2/BaseYii.php(365): yii\di\Container->get('craft\\web\\Appli...', Array, Array)
#20 /Users/rich/Sites/aub/vendor/craftcms/cms/bootstrap/bootstrap.php(246): yii\BaseYii::createObject(Array)
#21 /Users/rich/Sites/aub/vendor/craftcms/cms/bootstrap/web.php(51): require('/Users/rich/Sit...')
#22 /Users/rich/Sites/aub/public/index.php(20): require('/Users/rich/Sit...')
#23 /Users/rich/.composer/vendor/laravel/valet/server.php(191): require('/Users/rich/Sit...')
#24 {main}
rjgux commented

If it helps this is the output of exit(print_r(Sherlock::$plugin->settings));

putyourlightson\sherlock\models\SettingsModel Object
(
    [monitor] => 
    [notificationEmailAddresses] => *system email*
    [highSecurityLevel] => 1
    [headerProtectionSettings] => Array
        (
            [-] =>  
        )

    [contentSecurityPolicySettings] => Array
        (
            [-] =>  
        )

    [apiKey] => luRZC2oCBtduD4KS0pNIY4NltCkHH5Yf
    [restrictControlPanelIpAddresses] => 
    [restrictFrontEndIpAddresses] => 
    [integrationTypes] => Array
        (
        )

    [integrationSettings] => Array
        (
        )

    [disabledTests] => Array
        (
        )

    [criticalCraftUpdates] => Array
        (
            [-] =>  
        )

    [criticalPluginUpdates] => Array
        (
            [-] =>  
        )

    [craftUpdates] => Array
        (
        )

    [pluginUpdates] => Array
        (
        )

    [httpsControlPanel] => Array
        (
            [-] =>  
        )

    [httpsFrontEnd] => Array
        (
            [-] =>  
        )

    [craftFilePermissions] => Array
        (
            [-] =>  
        )

    [craftFolderPermissions] => Array
        (
            [-] =>  
        )

    [craftFoldersAboveWebRoot] => Array
        (
            [-] =>  
        )

    [phpVersion] => Array
        (
            [-] =>  
        )

    [phpComposerVersion] => Array
        (
            [-] =>  
        )

    [adminUsername] => Array
        (
        )

    [requireEmailVerification] => Array
        (
            [-] =>  
        )

    [webAliasInSiteBaseUrl] => Array
        (
            [-] =>  
        )

    [webAliasInVolumeBaseUrl] => Array
        (
            [-] =>  
        )

    [contentSecurityPolicy] => Array
        (
            [-] =>  
        )

    [cors] => Array
        (
            [-] =>  
        )

    [expectCT] => Array
        (
            [-] =>  
        )

    [referrerPolicy] => Array
        (
            [-] =>  
        )

    [strictTransportSecurity] => Array
        (
            [-] =>  
        )

    [xContentTypeOptions] => Array
        (
            [-] =>  
        )

    [xFrameOptions] => Array
        (
            [-] =>  
        )

    [xXssProtection] => Array
        (
        )

    [blowfishHashCost] => Array
        (
            [-] =>  
        )

    [cooldownDuration] => Array
        (
            [-] =>  
        )

    [cpTrigger] => Array
        (
        )

    [defaultDirMode] => Array
        (
            [-] =>  
        )

    [defaultFileMode] => Array
        (
            [-] =>  
        )

    [defaultTokenDuration] => Array
        (
            [-] =>  
        )

    [deferPublicRegistrationPassword] => Array
        (
        )

    [devMode] => Array
        (
            [-] =>  
        )

    [elevatedSessionDuration] => Array
        (
            [-] =>  
        )

    [enableCsrfProtection] => Array
        (
            [-] =>  
        )

    [invalidLoginWindowDuration] => Array
        (
            [-] =>  
        )

    [maxInvalidLogins] => Array
        (
            [-] =>  
        )

    [preventUserEnumeration] => Array
        (
            [-] =>  
        )

    [rememberedUserSessionDuration] => Array
        (
            [-] =>  
        )

    [requireMatchingUserAgentForSession] => Array
        (
        )

    [requireUserAgentAndIpForSession] => Array
        (
        )

    [sanitizeSvgUploads] => Array
        (
            [-] =>  
        )

    [testToEmailAddress] => Array
        (
            [-] =>  
        )

    [translationDebugOutput] => Array
        (
            [-] =>  
        )

    [useSecureCookies] => Array
        (
            [-] =>  
        )

    [userSessionDuration] => Array
        (
            [-] =>  
        )

    [verificationCodeDuration] => Array
        (
            [-] =>  
        )

    [_errors:yii\base\Model:private] => 
    [_validators:yii\base\Model:private] => 
    [_scenario:yii\base\Model:private] => default
    [_events:yii\base\Component:private] => Array
        (
            [beforeValidate] => Array
                (
                    [0] => Array
                        (
                            [0] => Array
                                (
                                    [0] => craft\behaviors\EnvAttributeParserBehavior Object
                                        (
                                            [owner] => putyourlightson\sherlock\models\SettingsModel Object
 *RECURSION*
                                            [attributes] => Array
                                                (
                                                    [0] => apiKey
                                                )

                                            [_values:craft\behaviors\EnvAttributeParserBehavior:private] => 
                                            [_attachedEvents:yii\base\Behavior:private] => Array
                                                (
                                                    [beforeValidate] => beforeValidate
                                                    [afterValidate] => afterValidate
                                                )

                                        )

                                    [1] => beforeValidate
                                )

                            [1] => 
                        )

                )

            [afterValidate] => Array
                (
                    [0] => Array
                        (
                            [0] => Array
                                (
                                    [0] => craft\behaviors\EnvAttributeParserBehavior Object
                                        (
                                            [owner] => putyourlightson\sherlock\models\SettingsModel Object
 *RECURSION*
                                            [attributes] => Array
                                                (
                                                    [0] => apiKey
                                                )

                                            [_values:craft\behaviors\EnvAttributeParserBehavior:private] => 
                                            [_attachedEvents:yii\base\Behavior:private] => Array
                                                (
                                                    [beforeValidate] => beforeValidate
                                                    [afterValidate] => afterValidate
                                                )

                                        )

                                    [1] => afterValidate
                                )

                            [1] => 
                        )

                )

        )

    [_eventWildcards:yii\base\Component:private] => Array
        (
        )

    [_behaviors:yii\base\Component:private] => Array
        (
            [parser] => craft\behaviors\EnvAttributeParserBehavior Object
                (
                    [owner] => putyourlightson\sherlock\models\SettingsModel Object
 *RECURSION*
                    [attributes] => Array
                        (
                            [0] => apiKey
                        )

                    [_values:craft\behaviors\EnvAttributeParserBehavior:private] => 
                    [_attachedEvents:yii\base\Behavior:private] => Array
                        (
                            [beforeValidate] => beforeValidate
                            [afterValidate] => afterValidate
                        )

                )

        )

)

It looks like the update migration did not run or the changes were not applied. The easiest fix in this case is to uninstall the plugin from the CP or console command, then install again. Note that this will reset your settings.

rjgux commented

Thanks @bencroker, I'll do that and report back.