Skip to content

Different menu for different roles

Choose a tag to compare

@naffiq naffiq released this 30 Oct 08:24
· 160 commits to master since this release

BridgeModule now has option composeMenu, that allows you to set different menu items for different roles. Instance of \yii\web\User, array of roles as $roles and $authManager are passed to evaluate required menu items.
In that case default menu items (settings, dashboard and users) will be overridden.

Example

'modules' => [
        'admin' => [
            'class' => '\naffiq\bridge\BridgeModule',
            'composeMenu' => function ($user, $roles, $authManager) {
                 /**
                  * @var \yii\web\User $user 
                  * @var string[] $roles
                  * @var \Da\User\Component\AuthDbManagerComponent $authManager 
                  */
                 if (in_array('admin', $roles)) {
                     return require __DIR__ . '/menu-admin.php';
                 }
                 if (in_array('editor', $roles)) {
                     return require __DIR__ . '/menu-editor.php';
                 }
                 if (in_array('manager', $roles)) {
                     return require __DIR__ . '/menu-manager.php';
                 }
                 
                 return __DIR__ . '/menu-default.php';
            }
        ]
    ],