public function showUnprotectedActionsCommand()
    {
        $methodPrivileges = [];
        foreach ($this->policyService->getRoles(true) as $role) {
            $methodPrivileges = array_merge($methodPrivileges, $role->getPrivilegesByType(MethodPrivilegeInterface::class));
        }

        $controllerClassNames = $this->reflectionService->getAllSubClassNamesForClass(AbstractController::class);
        $allActionsAreProtected = true;
        foreach ($controllerClassNames as $controllerClassName) {
            if ($this->reflectionService->isClassAbstract($controllerClassName)) {
                continue;
            }

            $methodNames = get_class_methods($controllerClassName);
            $foundUnprotectedAction = false;
            foreach ($methodNames as $methodName) {
                if (preg_match('/.*Action$/', $methodName) === 0 || $this->reflectionService->isMethodPublic($controllerClassName, $methodName) === false) {
                    continue;
                }
                /** @var MethodPrivilegeInterface $methodPrivilege */
                foreach ($methodPrivileges as $methodPrivilege) {
                    if ($methodPrivilege->matchesMethod($controllerClassName, $methodName)) {
                        continue 2;
                    }
                }

                if ($foundUnprotectedAction === false) {
                    $this->outputLine(PHP_EOL . '<b>' . $controllerClassName . '</b>');
                    $foundUnprotectedAction = true;
                    $allActionsAreProtected = false;
                }
                $this->outputLine('  ' . $methodName);
            }
        }

        if ($allActionsAreProtected === true) {
            $this->outputLine('All public controller actions are covered by your security policy. Good job!');
        }
    }
public function showUnprotectedActionsCommand()
    {
        $methodPrivileges = [];
        foreach ($this->policyService->getRoles(true) as $role) {
            $methodPrivileges = array_merge($methodPrivileges, $role->getPrivilegesByType(MethodPrivilegeInterface::class));
        }

        $controllerClassNames = $this->reflectionService->getAllSubClassNamesForClass(AbstractController::class);
        $allActionsAreProtected = true;
        foreach ($controllerClassNames as $controllerClassName) {
            if ($this->reflectionService->isClassAbstract($controllerClassName)) {
                continue;
            }

            $methodNames = get_class_methods($controllerClassName);
            $foundUnprotectedAction = false;
            foreach ($methodNames as $methodName) {
                if (preg_match('/.*Action$/', $methodName) === 0 || $this->reflectionService->isMethodPublic($controllerClassName, $methodName) === false) {
                    continue;
                }
                /** @var MethodPrivilegeInterface $methodPrivilege */
                foreach ($methodPrivileges as $methodPrivilege) {
                    if ($methodPrivilege->matchesMethod($controllerClassName, $methodName)) {
                        continue 2;
                    }
                }

                if ($foundUnprotectedAction === false) {
                    $this->outputLine(PHP_EOL . '<b>' . $controllerClassName . '</b>');
                    $foundUnprotectedAction = true;
                    $allActionsAreProtected = false;
                }
                $this->outputLine('  ' . $methodName);
            }
        }

        if ($allActionsAreProtected === true) {
            $this->outputLine('All public controller actions are covered by your security policy. Good job!');
        }
    }
public function showUnprotectedActionsCommand ( ) { $ methodPrivileges = [ ] ; foreach ( $ this -> policyService -> getRoles ( true ) as $ role ) { $ methodPrivileges = array_merge ( $ methodPrivileges , $ role -> getPrivilegesByType ( MethodPrivilegeInterface :: class ) ) ; } $ controllerClassNames = $ this -> reflectionService -> getAllSubClassNamesForClass ( AbstractController :: class ) ; $ allActionsAreProtected = true ; foreach ( $ controllerClassNames as $ controllerClassName ) { if ( $ this -> reflectionService -> isClassAbstract ( $ controllerClassName ) ) { continue ; } $ methodNames = get_class_methods ( $ controllerClassName ) ; $ foundUnprotectedAction = false ; foreach ( $ methodNames as $ methodName ) { if ( preg_match ( '/.*Action$/' , $ methodName ) === 0 || $ this -> reflectionService -> isMethodPublic ( $ controllerClassName , $ methodName ) === false ) { continue ; } /** @var MethodPrivilegeInterface $methodPrivilege */ foreach ( $ methodPrivileges as $ methodPrivilege ) { if ( $ methodPrivilege -> matchesMethod ( $ controllerClassName , $ methodName ) ) { continue 2 ; } } if ( $ foundUnprotectedAction === false ) { $ this -> outputLine ( PHP_EOL . '<b>' . $ controllerClassName . '</b>' ) ; $ foundUnprotectedAction = true ; $ allActionsAreProtected = false ; } $ this -> outputLine ( '  ' . $ methodName ) ; } } if ( $ allActionsAreProtected === true ) { $ this -> outputLine ( 'All public controller actions are covered by your security policy. Good job!' ) ; } }
Lists all public controller actions not covered by the active security policy

@return void
Lists all public controller actions not covered by the active security policy