slovocast/app/src/Routes.php

86 lines
2.6 KiB
PHP

<?php
namespace Slovocast;
use Slim\App;
use Slovocast\Controller\Channel\CreateChannelAction;
use Slovocast\Controller\Channel\CreateChannelPage;
use Slovocast\Controller\HomePage;
use Slovocast\Controller\HealthCheck;
use Slovocast\Controller\DashboardPage;
use Slovocast\Controller\User\RegisterUserPage;
use Slovocast\Controller\User\RegisterUserAction;
use Slovocast\Controller\User\LoginUserPage;
use Slovocast\Controller\User\LoginUserAction;
use Slovocast\Controller\User\LogoutUserAction;
use Slovocast\Middleware\FormKeyMiddleware;
use Slovocast\Middleware\VerifyPasswordMiddleware;
use Slovocast\Middleware\AuthenticatedMiddleware;
class Routes
{
/**
* @param App $app Instantiated Application
* @return void
*/
public static function setup(App $app): void
{
$app->get('/[home]', HomePage::class)->setName("home");
$app->get('/healthcheck', HealthCheck::class);
// User Routes
self::users($app);
self::dashboard($app);
// Channel Routes
self::channels($app);
}
/**
* @param App $app Instantiated Application
*/
protected static function users(App $app): void
{
$app->get('/register', RegisterUserPage::class)
->add(FormKeyMiddleware::class)
->setName('user-register-page');
$app->post('/register', RegisterUserAction::class)
->add(FormKeyMiddleware::class)
->add(VerifyPasswordMiddleware::class)
->setName('user-register-action');
$app->get('/login', LoginUserPage::class)
->setName('user-login-page');
$app->post('/login', LoginUserAction::class)
->setName('user-login-action');
$app->get('/logout', LogoutUserAction::class)
->setName('user-logout');
}
/**
* @param App $app Instantiated Application
*/
protected static function channels(App $app): void
{
$app->get('/channel/create', CreateChannelPage::class)
->add(FormKeyMiddleware::class)
->add(AuthenticatedMiddleware::class)
->setName('channel-create-page');
$app->post('/channel/create', CreateChannelAction::class)
->add(FormKeyMiddleware::class)
->add(AuthenticatedMiddleware::class)
->setName("channel-create-action");
}
/**
* @param App $app Instance of the application
*/
protected static function dashboard(App $app): void
{
$app->get('/dashboard', DashboardPage::class)
->add(AuthenticatedMiddleware::class)
->setName('dashboard');
}
}