ManaPHP\Authorization\Rbac\PermissionBuilder::getModulePermissions PHP Method

getModulePermissions() public method

public getModulePermissions ( string $module ) : array
$module string
return array
    public function getModulePermissions($module)
    {
        $app = $this->alias->get('@app');
        $permissions = [];
        foreach ($this->filesystem->glob('@app/' . $module . '/Controllers/*.php') as $file) {
            $file = str_replace(dirname($app) . '/', '', $file);
            $controller = str_replace('/', '\\', pathinfo($file, PATHINFO_DIRNAME) . '\\' . basename($file, '.php'));
            /** @noinspection SlowArrayOperationsInLoopInspection */
            $permissions = array_merge($permissions, $this->getControllerPermissions($controller));
        }
        return $permissions;
    }

Usage Example

 public function rebuildAction()
 {
     $permissionBuilder = new PermissionBuilder();
     foreach ($this->application->getModules() as $module) {
         foreach ($permissionBuilder->getModulePermissions($module) as $p) {
             $permission = RbacPermission::findFirst(['module' => $p['module'], 'controller' => $p['controller'], 'action' => $p['action']]);
             if ($permission === false) {
                 $permission = new RbacPermission();
                 $permission->module = $p['module'];
                 $permission->controller = $p['controller'];
                 $permission->action = $p['action'];
                 $permission->description = $p['description'];
                 $permission->created_time = time();
                 $permission->permission_type = RbacPermission::TYPE_PENDING;
                 $permission->create();
             }
         }
     }
     return $this->response->redirect('/admin/rbac_permission');
 }