Skip to content

Commit

Permalink
feat: Extension left menu support
Browse files Browse the repository at this point in the history
  • Loading branch information
dogukanoksuz committed Sep 9, 2024
1 parent 24bde45 commit e636db8
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 1 deletion.
40 changes: 39 additions & 1 deletion app/Http/Controllers/API/MenuController.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace App\Http\Controllers\API;

use App\Http\Controllers\Controller;
use App\Models\Extension;
use App\Models\Permission;
use App\Models\Server;
use Illuminate\Http\JsonResponse;
Expand Down Expand Up @@ -43,6 +44,43 @@ public function servers()
})]);
}

/**
* Returns extensions menu view
*
* @return JsonResponse
*/
public function extensions()
{
$extensions = Extension::getAll()->filter(function ($extension) {
return Permission::can(user()->id, 'extension', 'id', $extension->id);
})->map(function ($extension) {
$db = getExtensionJson($extension->name);
if (isset($db['menus']) && $db['menus']) {
$extension->menus = $this->checkMenu($db['menus'], $extension->name);
} else {
$extension->menus = [];
}

// Find a server that associated with this extension that user has permission to access
$serverInformation = $extension->servers()->get();
$serverInformation = $serverInformation->filter(function ($server) {
return Permission::can(user()->id, 'server', 'id', $server->id);
})->first();
if ($serverInformation) {
$extension->server_id = $serverInformation->id;
$extension->server_name = $serverInformation->name;
} else {
return null;
}

return $extension;
})->filter(function ($extension) {
return $extension !== null;
})->values();

return $extensions;
}

/**
* Returns server details
*
Expand All @@ -67,7 +105,7 @@ public function serverDetails(Server $server)
}

return $extension;
});
})->values();
$server->is_favorite = (bool) user()->myFavorites()->where('server_id', $server->id)->exists();
$server->can_run_command = $server->canRunCommand();
$server = $server->toArray();
Expand Down
1 change: 1 addition & 0 deletions routes/api.php
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
Route::group(['prefix' => 'menu'], function () {
Route::get('/servers', [MenuController::class, 'servers']);
Route::get('/servers/{server}', [MenuController::class, 'serverDetails']);
Route::get('/extensions', [MenuController::class, 'extensions']);
});

// Server Controller
Expand Down

0 comments on commit e636db8

Please sign in to comment.