File: /var/www/vhosts/creativefellows.nl/mygeomil.creativefellows.nl/v0.1/config/routes.php
<?php
use App\Action\Preflight\PreflightAction;
use App\Action\Login\LoginAction;
use App\Action\Login\LogoutAction;
use App\Action\Login\PostLoginAction;
use App\Action\View\PageAction;
use App\Action\Article\ListArticleCategoryAction;
use App\Action\Article\SearchArticleAction;
use App\Action\Article\SearchArticleCategoryAction;
use App\Action\Cart\CartPostAction;
use App\Action\Cart\CartDeleteAction;
use App\Action\Cart\CartPatchAction;
use App\Action\Cart\CartViewAction;
use App\Action\Order\OrderPostAction;
use App\Action\Addressbook\AddressbookPostAction;
// ADMIN
use App\Action\Admin\AdminViewAction;
use App\Action\Admin\AdminViewGroupAction;
// POST
use App\Action\Admin\Post\PostArticleAction;
use App\Action\Admin\Post\PostUserAction;
use App\Action\Admin\Post\PostGroupAction;
use App\Action\Admin\Post\PostSettingAction;
// DELETE
use App\Action\Admin\Delete\DeleteGroupAction;
use App\Action\Admin\Delete\DeleteUserAction;
use App\Action\Admin\Delete\DeleteArticleAction;
// PATCH
use App\Action\Admin\Patch\PatchGroupAction;
use App\Action\Admin\Patch\PatchArticleAction;
use App\Action\Admin\Patch\PatchUserAction;
// GET
use App\Action\Admin\Get\GetGroupAction;
use App\Action\Admin\Get\GetUserAction;
use App\Action\Admin\Get\GetArticleAction;
use App\Middleware\AuthMiddleware;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Slim\App;
use Slim\Interfaces\RouteCollectorProxyInterface as Group;
return function (App $app) {
// preflight headers
//$app->options('/{routes:.*}', PreflightAction::class);
// login
$app->get('/', LoginAction::class)->setName('login');
$app->get('/logoff', LogoutAction::class)->setName('logoff');
$app->post('/login', PostLoginAction::class)->setName('login');
// dashboard
$app->get('/dashboard', \App\Action\Dashboard\DashboardAction::class)->setName('dashboard')->add(AuthMiddleware::class);
$app->get('/dashboard/{page:[0-9]+}', \App\Action\Dashboard\DashboardAction::class)->setName('dashboard.view.page')->add(AuthMiddleware::class);
$app->post('/dashboard/order/{id}', \App\Action\Order\OrderGetAction::class)->setName('dashboard.order.get')->add(AuthMiddleware::class);
// articles
$app->group('/articles', function (Group $group) {
// list all
$group->get('', \App\Action\Article\ListArticleAction::class)->setName('articles.view')->add(AuthMiddleware::class);
// search
$group->group('/search/', function (Group $search){
$search->post('{search}', SearchArticleAction::class)->setName('articles.search');
$search->post('{category}/{search}', SearchArticleCategoryAction::class)->setName('articles.search');
});
// page
$group->get('/{page:[0-9]+}', \App\Action\Article\ListArticleAction::class)->setName('articles.viewpage');
// category + page
$group->get('/{category}[/{page:[0-9]+}]', ListArticleCategoryAction::class)->setName('articles.viewcategory');
$group->get('/{category}/{child}[/{page:[0-9]+}]', ListArticleCategoryAction::class)->setName('articles.viewcategory.child');
});
// service
$app->get('/service', \App\Action\Maintenance\MaintenanceAction::class)->setName('service')->add(AuthMiddleware::class);
// cart
$app->group('/cart', function (Group $group) {
$group->get('', CartViewAction::class)->setName('cart.view');
$group->post('/save', \App\Action\Order\OrderSaveAction::class)->setName('order.save');
$group->post('/saved/{saved_id}', \App\Action\Order\OrderLoadAction::class)->setName('order.save');
$group->get('/saved/{saved_id}', \App\Action\Order\OrderGetSavedAction::class)->setName('order.save');
$group->delete('/saved/{saved_id}', \App\Action\Order\OrderDeleteSavedAction::class)->setName('order.save');
$group->delete('/empty', \App\Action\Cart\CartEmptyAction::class)->setName('cart.empty');
$group->post('/{id}/{quantity}', CartPostAction::class)->setName('cart.post');
$group->patch('/{id}/{quantity}', CartPatchAction::class)->setName('cart.patch');
$group->delete('/{id}', CartDeleteAction::class)->setName('cart.delete');
$group->post('', OrderPostAction::class)->setName('order.post');
$group->get('/{section}', PageAction::class)->setName('order.complete');
});
// addressbook
$app->group('/addressbook', function (Group $group) {
$group->post('', AddressbookPostAction::class)->setName('addressbook.post');
});
// admin
$app->group('/admin', function (Group $group) {
// get
$group->get('[/{setting}]', AdminViewAction::class)->setName('admin.view');
// article groups
$group->post('/article-group', PostGroupAction::class)->setName('admin.post.group');
$group->get('/article-group/{id}', GetGroupAction::class)->setName('admin.get.group');
$group->patch('/article-group/{id}', PatchGroupAction::class)->setName('admin.patch.group');
$group->delete('/article-group/{id}', DeleteGroupAction::class)->setName('admin.delete.group');
$group->post('/article-group/article', \App\Action\Admin\Post\PostGroupArticleAction::class)->setName('admin.post.group.article');
// articles
$group->post('/articles', PostArticleAction::class)->setName('admin.post.article');
$group->get('/articles/{id:[0-9]+}', GetArticleAction::class)->setName('admin.view.article');
$group->delete('/articles/{id}', DeleteArticleAction::class)->setName('admin.delete.article');
$group->patch('/articles/{id}', PatchArticleAction::class)->setName('admin.patch.article');
$group->get('/articles/page:{page:[0-9]+}', AdminViewAction::class)->setName('admin.view.articlepage');
// user
$group->post('/user', PostUserAction::class)->setName('admin.post.user');
$group->delete('/user/{id}', DeleteUserAction::class)->setName('admin.delete.user');
$group->get('/user/{id}', GetUserAction::class)->setName('admin.get.user');
$group->patch('/user/{id}', PatchUserAction::class)->setName('admin.get.user');
// settings
$group->post('/settings', PostSettingAction::class)->setName('admin.post.setting');
});
// other
$app->get('/{section}', PageAction::class)->setName('service')->add(AuthMiddleware::class);
};