|
29 | 29 | use Api\User\Handler\User\PostUserResourceHandler; |
30 | 30 | use Api\User\Handler\User\Role\GetUserRoleCollectionHandler; |
31 | 31 | use Api\User\Handler\User\Role\GetUserRoleResourceHandler; |
| 32 | +use Dot\Router\RouteCollectorInterface; |
32 | 33 | use Mezzio\Application; |
| 34 | +use Psr\Container\ContainerExceptionInterface; |
33 | 35 | use Psr\Container\ContainerInterface; |
34 | | - |
35 | | -use function assert; |
| 36 | +use Psr\Container\NotFoundExceptionInterface; |
36 | 37 |
|
37 | 38 | class RoutesDelegator |
38 | 39 | { |
| 40 | + /** |
| 41 | + * @throws ContainerExceptionInterface |
| 42 | + * @throws NotFoundExceptionInterface |
| 43 | + */ |
39 | 44 | public function __invoke(ContainerInterface $container, string $serviceName, callable $callback): Application |
40 | 45 | { |
41 | | - $app = $callback(); |
42 | | - assert($app instanceof Application); |
43 | | - |
44 | 46 | $uuid = \Api\App\RoutesDelegator::REGEXP_UUID; |
45 | 47 |
|
46 | | - // Accounts having higher than user permissions manage user accounts |
47 | | - |
48 | | - $app->get('/user', GetUserCollectionHandler::class, 'user::list-user'); |
49 | | - $app->post('/user', PostUserResourceHandler::class, 'user::create-user'); |
50 | | - |
51 | | - $app->delete('/user/' . $uuid, DeleteUserResourceHandler::class, 'user::delete-user'); |
52 | | - $app->get('/user/' . $uuid, GetUserResourceHandler::class, 'user::view-user'); |
53 | | - $app->patch('/user/' . $uuid, PatchUserResourceHandler::class, 'user::update-user'); |
54 | | - |
55 | | - $app->delete('/user/' . $uuid . '/avatar', DeleteUserAvatarResourceHandler::class, 'user::delete-user-avatar'); |
56 | | - $app->get('/user/' . $uuid . '/avatar', GetUserAvatarResourceHandler::class, 'user::view-user-avatar'); |
57 | | - $app->post('/user/' . $uuid . '/avatar', PostUserAvatarResourceHandler::class, 'user::create-user-avatar'); |
58 | | - |
59 | | - $app->get('/user/role', GetUserRoleCollectionHandler::class, 'user::list-role'); |
60 | | - $app->get('/user/role/' . $uuid, GetUserRoleResourceHandler::class, 'user::view-role'); |
61 | | - |
62 | | - $app->patch('/user/' . $uuid . '/activate', PatchUserActivateHandler::class, 'user::activate-user'); |
63 | | - $app->patch('/user/' . $uuid . '/deactivate', PatchUserDeactivateHandler::class, 'user::deactivate-user'); |
64 | | - |
65 | | - // Users manage their user accounts |
66 | | - |
67 | | - $app->delete('/user/account', DeleteUserAccountResourceHandler::class, 'user::delete-account'); |
68 | | - $app->get('/user/account', GetUserAccountResourceHandler::class, 'user::view-account'); |
69 | | - $app->patch('/user/account', PatchUserAccountResourceHandler::class, 'user::update-account'); |
70 | | - $app->post('/user/account', PostUserAccountResourceHandler::class, 'user::create-account'); |
71 | | - |
72 | | - $app->delete('/user/account/avatar', DeleteUserAccountAvatarHandler::class, 'user::delete-account-avatar'); |
73 | | - $app->get('/user/account/avatar', GetUserAccountAvatarHandler::class, 'user::view-account-avatar'); |
74 | | - $app->post('/user/account/avatar', PostUserAccountAvatarHandler::class, 'user::create-account-avatar'); |
75 | | - |
76 | | - // Unauthenticated users manage their user accounts |
77 | | - |
78 | | - $app->patch('/user/account/activate/{hash}', PatchUserAccountActivateHandler::class, 'user::activate-account'); |
79 | | - $app->post('/user/account/activate', PostUserAccountActivateHandler::class, 'user::request-activate-account'); |
80 | | - |
81 | | - $app->post('/user/account/recover', PostUserAccountRecoverHandler::class, 'user::recover-account'); |
82 | | - |
83 | | - $app->get( |
84 | | - '/user/account/reset-password/{hash}', |
85 | | - GetUserAccountResetPasswordHandler::class, |
86 | | - 'user::check-account-reset-password' |
87 | | - ); |
88 | | - $app->patch( |
89 | | - '/user/account/reset-password/{hash}', |
90 | | - PatchUserAccountResetPasswordHandler::class, |
91 | | - 'user::update-account-reset-password' |
92 | | - ); |
93 | | - $app->post( |
94 | | - '/user/account/reset-password', |
95 | | - PostUserAccountResetPasswordHandler::class, |
96 | | - 'user::create-account-reset-password' |
97 | | - ); |
98 | | - |
99 | | - return $app; |
| 48 | + /** @var RouteCollectorInterface $routeCollector */ |
| 49 | + $routeCollector = $container->get(RouteCollectorInterface::class); |
| 50 | + |
| 51 | + $routeCollector->group('/user') |
| 52 | + ->get('', GetUserCollectionHandler::class, 'user::list-user') |
| 53 | + ->post('', PostUserResourceHandler::class, 'user::create-user') |
| 54 | + ->patch('/' . $uuid . '/activate', PatchUserActivateHandler::class, 'user::activate-user') |
| 55 | + ->patch('/' . $uuid . '/deactivate', PatchUserDeactivateHandler::class, 'user::deactivate-user'); |
| 56 | + |
| 57 | + $routeCollector->group('/user') |
| 58 | + ->delete('/' . $uuid, DeleteUserResourceHandler::class, 'user::delete-user') |
| 59 | + ->get('/' . $uuid, GetUserResourceHandler::class, 'user::view-user') |
| 60 | + ->patch('/' . $uuid, PatchUserResourceHandler::class, 'user::update-user'); |
| 61 | + |
| 62 | + $routeCollector->group('/user/' . $uuid . '/avatar') |
| 63 | + ->delete('', DeleteUserAvatarResourceHandler::class, 'user::delete-user-avatar') |
| 64 | + ->get('', GetUserAvatarResourceHandler::class, 'user::view-user-avatar') |
| 65 | + ->post('', PostUserAvatarResourceHandler::class, 'user::create-user-avatar'); |
| 66 | + |
| 67 | + $routeCollector->group('/user/role') |
| 68 | + ->get('', GetUserRoleCollectionHandler::class, 'user::list-role') |
| 69 | + ->get('/' . $uuid, GetUserRoleResourceHandler::class, 'user::view-role'); |
| 70 | + |
| 71 | + $routeCollector->group('/user/account') |
| 72 | + ->delete('', DeleteUserAccountResourceHandler::class, 'user::delete-account') |
| 73 | + ->get('', GetUserAccountResourceHandler::class, 'user::view-account') |
| 74 | + ->patch('', PatchUserAccountResourceHandler::class, 'user::update-account') |
| 75 | + ->post('', PostUserAccountResourceHandler::class, 'user::create-account') |
| 76 | + ->patch('/activate/{hash}', PatchUserAccountActivateHandler::class, 'user::activate-account') |
| 77 | + ->post('/activate', PostUserAccountActivateHandler::class, 'user::request-activate-account') |
| 78 | + ->post('/recover', PostUserAccountRecoverHandler::class, 'user::recover-account'); |
| 79 | + |
| 80 | + $routeCollector->group('/user/account/avatar') |
| 81 | + ->delete('', DeleteUserAccountAvatarHandler::class, 'user::delete-account-avatar') |
| 82 | + ->get('', GetUserAccountAvatarHandler::class, 'user::view-account-avatar') |
| 83 | + ->post('', PostUserAccountAvatarHandler::class, 'user::create-account-avatar'); |
| 84 | + |
| 85 | + $routeCollector->group('/user/account/reset-password') |
| 86 | + ->get('/{hash}', GetUserAccountResetPasswordHandler::class, 'user::check-account-reset-password') |
| 87 | + ->patch('/{hash}', PatchUserAccountResetPasswordHandler::class, 'user::update-account-reset-password') |
| 88 | + ->post('', PostUserAccountResetPasswordHandler::class, 'user::create-account-reset-password'); |
| 89 | + |
| 90 | + return $callback(); |
100 | 91 | } |
101 | 92 | } |
0 commit comments