Skip to content
Open
2 changes: 1 addition & 1 deletion backend/components/BaseController.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public function behaviors()
'class' => \yii\filters\AccessControl::class,
'rules' => [
'adminActions'=>[
'allow' => true,
'allow'=>true,
'roles' => ['@'],
'matchCallback' => function () {
return \Yii::$app->user->identity->isAdmin;
Expand Down
45 changes: 12 additions & 33 deletions backend/config/web.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,39 +14,18 @@
'@npm' => '@vendor/npm-asset',
],
'modules' => [
'moderation' => [
'class' => 'app\modules\moderation\Module'
],
'speedprogramming' => [
'class' => 'app\modules\speedprogramming\Module',
],
'sales' => [
'class' => 'app\modules\sales\Module',
],
'content' => [
'class' => 'app\modules\content\Module',
],
'infrastructure' => [
'class' => 'app\modules\infrastructure\Module',
],
'smartcity' => [
'class' => 'app\modules\smartcity\Module',
],
'restapi' => [
'class' => 'app\modules\restapi\Module',
],
'settings' => [
'class' => 'app\modules\settings\Module',
],
'frontend' => [
'class' => 'app\modules\frontend\Module',
],
'gameplay' => [
'class' => 'app\modules\gameplay\Module',
],
'activity' => [
'class' => 'app\modules\activity\Module',
],
'administer' => ['class' => 'app\modules\administer\Module',],
'moderation' => ['class' => 'app\modules\moderation\Module'],
'speedprogramming' => ['class' => 'app\modules\speedprogramming\Module',],
'sales' => ['class' => 'app\modules\sales\Module',],
'content' => ['class' => 'app\modules\content\Module',],
'infrastructure' => ['class' => 'app\modules\infrastructure\Module',],
'smartcity' => ['class' => 'app\modules\smartcity\Module',],
'restapi' => ['class' => 'app\modules\restapi\Module',],
'settings' => ['class' => 'app\modules\settings\Module',],
'frontend' => ['class' => 'app\modules\frontend\Module',],
'gameplay' => ['class' => 'app\modules\gameplay\Module',],
'activity' => ['class' => 'app\modules\activity\Module',],
],
'components' => [
'i18n' => [
Expand Down
65 changes: 36 additions & 29 deletions backend/migrations-init/m251207_102327_populate_mui_menu.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,26 +42,26 @@ class m251207_102327_populate_mui_menu extends Migration
'icon' => 'fas fa-money-check-alt',
'visibility' => 'admin',
'items' => [
['label' => 'Sales Dashboard', 'url' => ['/sales/default/index'], 'visibility' => 'admin' ],
['label' => 'Customers', 'url' => ['/sales/player-customer/index'], 'visibility' => 'admin' ,],
['label' => 'Subscriptions', 'url' => ['/sales/player-subscription/index'], 'visibility' => 'admin' ,],
['label' => 'Player Products', 'url' => ['/sales/player-product/index'], 'visibility' => 'admin' ,],
['label' => 'Products', 'url' => ['/sales/product/index'], 'visibility' => 'admin' ,],
['label' => 'Prices', 'url' => ['/sales/price/index'], 'visibility' => 'admin' ,],
['label' => 'Product Networks', 'url' => ['/sales/product-network/index'], 'visibility' => 'admin' ,],
['label' => 'Payment History', 'url' => ['/sales/player-payment-history/index'], 'visibility' => 'admin' ,],
['label' => 'Webhook', 'url' => ['/sales/stripe-webhook/index'], 'visibility' => 'admin' ,],
['label' => 'Sales Dashboard', 'url' => ['/sales/default/index'], 'visibility' => 'admin'],
['label' => 'Customers', 'url' => ['/sales/player-customer/index'], 'visibility' => 'admin',],
['label' => 'Subscriptions', 'url' => ['/sales/player-subscription/index'], 'visibility' => 'admin',],
['label' => 'Player Products', 'url' => ['/sales/player-product/index'], 'visibility' => 'admin',],
['label' => 'Products', 'url' => ['/sales/product/index'], 'visibility' => 'admin',],
['label' => 'Prices', 'url' => ['/sales/price/index'], 'visibility' => 'admin',],
['label' => 'Product Networks', 'url' => ['/sales/product-network/index'], 'visibility' => 'admin',],
['label' => 'Payment History', 'url' => ['/sales/player-payment-history/index'], 'visibility' => 'admin',],
['label' => 'Webhook', 'url' => ['/sales/stripe-webhook/index'], 'visibility' => 'admin',],
]
],
[
'label' => '<i class="fas fa-tachometer-alt"></i> Speed',
'url' => ['/speedprogramming/default/index'],
'icon' => 'fas fa-money-check-alt',
'visibility' => 'admin',
'enabled'=>'0',
'enabled' => '0',
'items' => [
['label' => 'Problems', 'url' => ['/speedprogramming/speed-problem/index'], 'visibility' => 'admin' ,],
['label' => 'Solutions', 'url' => ['/speedprogramming/default/index'], 'visibility' => 'admin' ,],
['label' => 'Problems', 'url' => ['/speedprogramming/speed-problem/index'], 'visibility' => 'admin',],
['label' => 'Solutions', 'url' => ['/speedprogramming/default/index'], 'visibility' => 'admin',],
]
],
[
Expand Down Expand Up @@ -108,7 +108,7 @@ class m251207_102327_populate_mui_menu extends Migration
'label' => '<i class="bi bi-buildings-fill"></i> SmartCity',
'url' => ['/smartcity/default/index'],
'visibility' => 'user',
'enabled'=>0,
'enabled' => 0,
'items' => [
['label' => 'Infrastructure', 'url' => ['/smartcity/infrastructure/index'], 'visibility' => 'user',],
['label' => 'Infrastructure Targets', 'url' => ['/smartcity/infrastructure-target/index'], 'visibility' => 'user',],
Expand Down Expand Up @@ -185,10 +185,10 @@ class m251207_102327_populate_mui_menu extends Migration
['label' => 'Hints', 'url' => ['/gameplay/hint/index'], 'visibility' => 'admin',],
['label' => 'Achievements', 'url' => ['/gameplay/achievement/index'], 'visibility' => 'admin',],
['label' => 'Badges', 'url' => ['/gameplay/badge/index'], 'visibility' => 'admin',],
['label' => 'Tutorials', 'url' => ['/gameplay/tutorial/index'], 'visibility' => 'admin','enabled'=>0],
['label' => 'Tutorial Target', 'url' => ['/gameplay/tutorial-target/index'], 'visibility' => 'admin','enabled'=>0],
['label' => 'Tutorial Tasks', 'url' => ['/gameplay/tutorial-task/index'], 'visibility' => 'admin','enabled'=>0],
['label' => 'Tutorial Task Dependencies', 'url' => ['/gameplay/tutorial-task-dependency/index'], 'visibility' => 'admin','enabled'=>0],
['label' => 'Tutorials', 'url' => ['/gameplay/tutorial/index'], 'visibility' => 'admin', 'enabled' => 0],
['label' => 'Tutorial Target', 'url' => ['/gameplay/tutorial-target/index'], 'visibility' => 'admin', 'enabled' => 0],
['label' => 'Tutorial Tasks', 'url' => ['/gameplay/tutorial-task/index'], 'visibility' => 'admin', 'enabled' => 0],
['label' => 'Tutorial Task Dependencies', 'url' => ['/gameplay/tutorial-task-dependency/index'], 'visibility' => 'admin', 'enabled' => 0],
['label' => 'Credentials', 'url' => ['/gameplay/credential/index'], 'visibility' => 'admin',],
],
],
Expand Down Expand Up @@ -216,27 +216,34 @@ class m251207_102327_populate_mui_menu extends Migration
['label' => 'Users', 'url' => ['/settings/user/index'], 'visibility' => 'admin',],
],
],
[
'label' => '<i class="bi bi-tools"></i> Administer',
'url' => ['/administer'],
'visibility' => 'admin',
'items' => [
['label' => 'Main', 'url' => ['/administer/default/index'], 'visibility' => 'admin',],
['label' => 'Events', 'url' => ['/administer/events/index'], 'visibility' => 'admin',],
],
],

];
/**
* {@inheritdoc}
*/
public function safeUp()
{
$root=0;
foreach($this->items as $menu)
{
$this->insert('mui_menu',['label'=>$menu['label'],'url'=>$menu['url'][0],'visibility'=>$menu['visibility'],'sort_order'=>$root++,'enabled'=>intval(@$menu['enabled'] ?? 1 )]);
$id=Yii::$app->db->getLastInsertID();
$child=0;
foreach($menu['items'] as $item)
{
if(is_array($item))
$this->insert('mui_menu',['label'=>$item['label'],'url'=>$item['url'][0],'visibility'=>$item['visibility'],'parent_id'=>$id,'sort_order'=>$child++,'enabled'=>intval(@$item['enabled'] ?? (@$menu['enabled'] ?? 1) )]);
$root = 0;
foreach ($this->items as $menu) {
$this->insert('mui_menu', ['label' => $menu['label'], 'url' => $menu['url'][0], 'visibility' => $menu['visibility'], 'sort_order' => $root++, 'enabled' => intval(@$menu['enabled'] ?? 1)]);
$id = Yii::$app->db->getLastInsertID();
$child = 0;
foreach ($menu['items'] as $item) {
if (is_array($item))
$this->insert('mui_menu', ['label' => $item['label'], 'url' => $item['url'][0], 'visibility' => $item['visibility'], 'parent_id' => $id, 'sort_order' => $child++, 'enabled' => intval(@$item['enabled'] ?? (@$menu['enabled'] ?? 1))]);
else
$this->insert('mui_menu',['label'=>$item,'visibility'=>'admin','parent_id'=>$id,'sort_order'=>$child++]);
$this->insert('mui_menu', ['label' => $item, 'visibility' => 'admin', 'parent_id' => $id, 'sort_order' => $child++]);
}
}

}

/**
Expand Down
47 changes: 47 additions & 0 deletions backend/migrations/m260205_183413_add_administer_menu_items.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?php

use yii\db\Migration;

class m260205_183413_add_administer_menu_items extends Migration
{
public $items = [
[
'label' => '<i class="bi bi-tools"></i> Administer',
'url' => ['/administer'],
'visibility' => 'admin',
'items' => [
['label' => 'Main', 'url' => ['/administer/default/index'], 'visibility' => 'admin',],
['label' => 'Events', 'url' => ['/administer/events/index'], 'visibility' => 'admin',],
],
],

];
/**
* {@inheritdoc}
*/
public function safeUp()
{
$root = 8;
foreach ($this->items as $menu) {
$this->insert('mui_menu', ['label' => $menu['label'], 'url' => $menu['url'][0], 'visibility' => $menu['visibility'], 'sort_order' => $root++, 'enabled' => intval(@$menu['enabled'] ?? 1)]);
$id = Yii::$app->db->getLastInsertID();
$child = 0;
foreach ($menu['items'] as $item) {
if (is_array($item))
$this->insert('mui_menu', ['label' => $item['label'], 'url' => $item['url'][0], 'visibility' => $item['visibility'], 'parent_id' => $id, 'sort_order' => $child++, 'enabled' => intval(@$item['enabled'] ?? (@$menu['enabled'] ?? 1))]);
else
$this->insert('mui_menu', ['label' => $item, 'visibility' => 'admin', 'parent_id' => $id, 'sort_order' => $child++]);
}
}
}


/**
* {@inheritdoc}
*/
public function safeDown()
{
echo "m260205_183413_add_administer_menu_items cannot be reverted.\n";
}

}
24 changes: 24 additions & 0 deletions backend/modules/administer/Module.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

namespace app\modules\administer;

/**
* administer module definition class
*/
class Module extends \yii\base\Module
{
/**
* {@inheritdoc}
*/
public $controllerNamespace = 'app\modules\administer\controllers';

/**
* {@inheritdoc}
*/
public function init()
{
parent::init();

// custom initialization code goes here
}
}
40 changes: 40 additions & 0 deletions backend/modules/administer/controllers/DefaultController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?php

namespace app\modules\administer\controllers;

use Yii;
use yii\web\NotFoundHttpException;
use yii\web\Response;
use yii\helpers\ArrayHelper;
use yii\filters\VerbFilter;

/**
* Default controller for the `administer` module
*/
class DefaultController extends \app\components\BaseController
{
public function behaviors()
{
return ArrayHelper::merge(parent::behaviors(), [
'access' => [
'class' => \yii\filters\AccessControl::class,
'rules' => [
'authActions' => [
'allow' => \Yii::$app->user->identity && \Yii::$app->user->identity->isAdmin,
'actions' => ['index'],
'roles' => ['@'],
],
],
],
]);
}

/**
* Renders the index view for the module
* @return string
*/
public function actionIndex()
{
return $this->render('index');
}
}
Loading