castopod/modules/Auth/Config/Routes.php

140 lines
5.1 KiB
PHP

<?php
declare(strict_types=1);
namespace Modules\Auth\Config;
$routes = service('routes');
service('auth')
->routes($routes);
// Admin routes for users and podcast contributors
$routes->group(
config('Admin')
->gateway,
[
'namespace' => 'Modules\Auth\Controllers',
],
static function ($routes): void {
$routes->get('magic-link-set-password', 'MagicLinkController::setPasswordView', [
'as' => 'magic-link-set-password',
]);
$routes->post('magic-link-set-password', 'MagicLinkController::setPasswordAction');
$routes->post('interact-as-actor', 'InteractController::attemptInteractAsActor', [
'as' => 'interact-as-actor',
]);
// Users
$routes->group('users', static function ($routes): void {
$routes->get('/', 'UserController::list', [
'as' => 'user-list',
'filter' => 'permission:users.manage',
]);
$routes->get('new', 'UserController::create', [
'as' => 'user-create',
'filter' => 'permission:users.manage',
]);
$routes->post('new', 'UserController::attemptCreate', [
'filter' => 'permission:users.manage',
]);
// User
$routes->group('(:num)', static function ($routes): void {
$routes->get('/', 'UserController::view/$1', [
'as' => 'user-view',
'filter' => 'permission:users.manage',
]);
$routes->get('edit', 'UserController::edit/$1', [
'as' => 'user-edit',
'filter' => 'permission:users.manage',
]);
$routes->post('edit', 'UserController::attemptEdit/$1', [
'filter' => 'permission:users.manage',
]);
$routes->get('delete', 'UserController::delete/$1', [
'as' => 'user-delete',
'filter' => 'permission:users.manage',
]);
$routes->post('delete', 'UserController::attemptDelete/$1', [
'as' => 'user-delete',
'filter' => 'permission:users.manage',
]);
});
});
// My account
$routes->group('my-account', static function ($routes): void {
$routes->get('/', 'MyAccountController', [
'as' => 'my-account',
]);
$routes->get('change-password', 'MyAccountController::changePassword', [
'as' => 'change-password',
],);
$routes->post('change-password', 'MyAccountController::attemptChange');
});
// Podcast contributors
$routes->group('podcasts/(:num)/contributors', static function ($routes): void {
$routes->get('/', 'ContributorController::list/$1', [
'as' => 'contributor-list',
'filter' =>
'permission:podcast#.manage-contributors',
]);
$routes->get('add', 'ContributorController::add/$1', [
'as' => 'contributor-add',
'filter' => 'permission:podcast#.manage-contributors',
]);
$routes->post(
'add',
'ContributorController::attemptAdd/$1',
[
'filter' =>
'permission:podcast#.manage-contributors',
],
);
// Contributor
$routes->group('(:num)', static function ($routes): void {
$routes->get('/', 'ContributorController::view/$1/$2', [
'as' => 'contributor-view',
'filter' =>
'permission:podcast#.manage-contributors',
]);
$routes->get(
'edit',
'ContributorController::edit/$1/$2',
[
'as' => 'contributor-edit',
'filter' =>
'permission:podcast#.manage-contributors',
],
);
$routes->post(
'edit',
'ContributorController::attemptEdit/$1/$2',
[
'filter' =>
'permission:podcast#.manage-contributors',
],
);
$routes->get(
'remove',
'ContributorController::remove/$1/$2',
[
'as' => 'contributor-remove',
'filter' =>
'permission:podcast#.manage-contributors',
],
);
$routes->post(
'remove',
'ContributorController::attemptRemove/$1/$2',
[
'filter' =>
'permission:podcast#.manage-contributors',
],
);
});
});
}
);