<?php /** * Copyright (C) 2019 Leipzig University Library * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * @author Sebastian Kehr <kehr@ub.uni-leipzig.de> * @license http://opensource.org/licenses/gpl-2.0.php GNU GPLv2 */ use fid\Controller\RecordController; use fid\Controller\RecordControllerDelegatorFactory; use fid\Controller\UserController; use fid\Controller\UserControllerFactory; use fid\Filter\PermissionsFilter; use fid\Filter\PermissionsFilterFactory; use fid\FormModel\PasswordChangeModel; use fid\FormModel\PasswordResetModel; use fid\FormModel\UsernameChangeModel; use fid\Helper\FormLabel; use fid\Helper\TranslatorDelegator; use fid\Hydrator\OrderHydrator; use fid\Hydrator\UserHydrator; use fid\Hydrator\UserHydratorDelegatorFactory; use fid\Listener\BaseUrlListener; use fid\Listener\ErrorListener; use fid\Listener\ErrorListenerFactory; use fid\Listener\LocaleListener; use fid\Serializer\OrderCreationRequestUserNormalizer; use fid\Service\Client; use fid\Service\ClientFactory; use fid\VuFind\Auth\Authenticator; use fid\VuFind\Auth\AuthenticatorFactory; use fid\VuFind\Auth\ILSAuthenticator; use fid\VuFind\Auth\ILSAuthenticatorFactory; use fid\VuFind\Db\Row\User; use fid\VuFind\Db\Row\UserDelegatorFactory; use fid\VuFind\ILS\Fid; use fid\VuFind\ILS\FidFactory; use fid\VuFind\Resolver\Driver\Ezb; use fid\VuFind\Resolver\Driver\EzbDelegatorFactory; use finc\Resolver\Driver\FincResolverDriverFactory; use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer; use VuFind\Auth\ILSAuthenticator as BaseILSAuthenticator; use VuFind\Controller\AbstractBaseWithConfigFactory; use VuFind\Db\Row\User as BaseUser; use VuFind\Db\Row\UserFactory; use Zend\Mvc\I18n\Translator; use Zend\Mvc\Plugin\FlashMessenger\FlashMessenger; use Zend\ServiceManager\Factory\InvokableFactory; $config = [ 'forms' => [ 'user-init-form' => require 'user-init-form.php', 'user-create-form' => require 'user-create-form.php', 'user-update-form' => require 'user-update-form.php', 'admin-edit-form' => require 'admin-edit-form.php', 'fid-acquisition-form' => require 'fid-acquisition-form.php', 'fid-acquisition-subito-partial-copy-form' => require 'fid-acquisition-subito-partial-copy-form.php', PasswordResetModel::class => require 'password-reset-form.php', PasswordChangeModel::class => require 'password-change-form.php', UsernameChangeModel::class => require 'username-change-form.php', ], 'filters' => [ 'factories' => [ PermissionsFilter::class => PermissionsFilterFactory::class, ] ], 'hydrators' => [ 'factories' => [ UserHydrator::class => InvokableFactory::class, OrderHydrator::class => InvokableFactory::class, ], 'delegators' => [ UserHydrator::class => [ UserHydratorDelegatorFactory::class, ], ], ], 'controllers' => [ 'factories' => [ RecordController::class => AbstractBaseWithConfigFactory::class, UserController::class => UserControllerFactory::class, ], 'aliases' => [ \VuFind\Controller\RecordController::class => RecordController::class, ], 'delegators' => [ RecordController::class => [ RecordControllerDelegatorFactory::class, ], ], ], 'listeners' => [ ErrorListener::class, LocaleListener::class, BaseUrlListener::class, ], // TODO: issue PR to add alias to vufind core 'controller_plugins' => [ 'aliases' => [ 'flashmessenger' => FlashMessenger::class, ] ], 'service_manager' => [ 'aliases' => [ BaseILSAuthenticator::class => ILSAuthenticator::class, 'MvcTranslator' => Translator::class, ], 'delegators' => [ ILSAuthenticator::class => [ ILSAuthenticatorFactory::class, ], Translator::class => [ TranslatorDelegator::class, ], ], 'factories' => [ Client::class => ClientFactory::class, ErrorListener::class => InvokableFactory:: class, ILSAuthenticator::class => ILSAuthenticatorFactory::class, LocaleListener::class => InvokableFactory::class, BaseUrlListener::class => InvokableFactory::class ], ], 'view_helpers' => [ 'aliases' => [ 'formLabel' => FormLabel::class, ], 'factories' => [ FormLabel::class => InvokableFactory::class, ], ], 'vufind' => [ 'plugin_managers' => [ 'ajaxhandler' => [ 'factories' => [ 'fid\AjaxHandler\GetResolverLinks' => 'fid\AjaxHandler\GetResolverLinksFactory' ], 'aliases' => [ 'getResolverLinks' => 'fid\AjaxHandler\GetResolverLinks' ] ], 'auth' => [ 'aliases' => [ 'fid' => Authenticator::class, ], 'factories' => [ Authenticator::class => AuthenticatorFactory::class, ], ], 'db_row' => [ 'aliases' => [ BaseUser::class => User::class, ], 'delegators' => [ User::class => [ UserDelegatorFactory::class, ], ], 'factories' => [ User::class => UserFactory::class, ], ], 'ils_driver' => [ 'aliases' => [ 'fid' => Fid::class, ], 'factories' => [ Fid::class => FidFactory::class, ], ], 'recordtab' => [ 'invokables' => [ 'worldcat' => 'fid\RecordTab\Worldcat', ], ], 'resolver_driver' => [ 'factories' => [ Ezb::class => FincResolverDriverFactory::class, ], 'delegators' => [ Ezb::class => [ EzbDelegatorFactory::class, ], ], 'aliases' => [ 'ezb' => Ezb::class, ], ], ], ], // Authorization configuration: 'zfc_rbac' => [ 'vufind_permission_provider_manager' => [ 'factories' => [ 'fid\Role\PermissionProvider\FidApiPermission' => 'fid\Role\PermissionProvider\Factory::getFidApiPermission' ], 'aliases' => [ 'FidApiPermission' => 'fid\Role\PermissionProvider\FidApiPermission' ] ] ], 'router' => [ 'routes' => [ 'fid' => [ 'type' => 'literal', 'may_terminate' => false, 'options' => [ 'route' => '/fid', ], 'child_routes' => [ 'user' => [ 'may_terminate' => false, 'type' => 'literal', 'options' => [ 'route' => '/user', ], 'child_routes' => [ 'init' => [ 'may_terminate' => true, 'type' => 'literal', 'options' => [ 'route' => '/init', 'defaults' => [ 'controller' => UserController::class, 'action' => 'init', ], ], ], 'create' => [ 'type' => 'literal', 'options' => [ 'route' => '/create', 'defaults' => [ 'controller' => UserController::class, 'action' => 'create', ], ], ], 'update' => [ 'type' => 'literal', 'options' => [ 'route' => '/update', 'defaults' => [ 'controller' => UserController::class, 'action' => 'update', ], ], ], 'policy' => [ 'type' => 'literal', 'options' => [ 'route' => '/policy', 'defaults' => [ 'controller' => UserController::class, 'action' => 'policy', ], ], ], 'terms' => [ 'type' => 'literal', 'options' => [ 'route' => '/terms', 'defaults' => [ 'controller' => UserController::class, 'action' => 'terms', ], ], ], 'reset-password' => [ 'type' => 'literal', 'options' => [ 'route' => '/reset-password', 'defaults' => [ 'controller' => UserController::class, 'action' => 'resetPassword', ], ], ], 'change-password' => [ 'type' => 'literal', 'options' => [ 'route' => '/change-password', 'defaults' => [ 'controller' => UserController::class, 'action' => 'changePassword', ], ], ], 'change-username' => [ 'type' => 'literal', 'options' => [ 'route' => '/change-username', 'defaults' => [ 'controller' => UserController::class, 'action' => 'changeUsername', ], ], ], 'update-username' => [ 'type' => 'literal', 'options' => [ 'route' => '/update-username', 'defaults' => [ 'controller' => UserController::class, 'action' => 'updateUsername', ], ], ], 'orders' => [ 'type' => 'literal', 'options' => [ 'route' => '/orders', 'defaults' => [ 'controller' => UserController::class, 'action' => 'orders', ], ], ], ], ], 'admin' => [ 'may_terminate' => false, 'type' => 'literal', 'options' => [ 'route' => '/admin' ], 'child_routes' => [ 'list' => [ 'type' => 'literal', 'options' => [ 'route' => '/list', 'defaults' => [ 'controller' => UserController::class, 'action' => 'list', ], ], ], 'exportList' => [ 'type' => 'literal', 'options' => [ 'route' => '/exportList', 'defaults' => [ 'controller' => UserController::class, 'action' => 'exportList', ], ], ], 'edit' => [ 'type' => 'Zend\Router\Http\Segment', 'options' => [ 'route' => '/edit/[:userid]', 'defaults' => [ 'controller' => UserController::class, 'action' => 'edit', 'userid' => null ], ], ], 'orders' => [ 'type' => 'literal', 'options' => [ 'route' => '/orders', 'defaults' => [ 'controller' => UserController::class, 'action' => 'adminOrders', ], ], ], ], ], ], ], 'myresearch-account' => [ 'options' => [ 'defaults' => [ 'controller' => UserController::class, 'action' => 'init', ], ], ], 'myresearch-recover' => [ 'options' => [ 'defaults' => [ 'controller' => UserController::class, 'action' => 'resetPassword', ] ] ] ], ], 'symfony_serializer' => [ 'normalizers' => [ // TODO: add DateTimeNormalizer to finc/symfony-zend-serializer-bridge DateTimeNormalizer::class => 2000, OrderCreationRequestUserNormalizer::class => 1000, ], ], ]; $nonTabRecordActions = [ 'fidPDA', 'fidSubitoArticle', 'fidSubitoPartialCopy' ]; // Define record view routes -- route name => controller // Define record view routes once again to add new nonTabRecordActions $recordRoutes = [ 'record' => 'Record' ]; $routeGenerator = new \VuFind\Route\RouteGenerator($nonTabRecordActions); $routeGenerator->addRecordRoutes($config, $recordRoutes); return $config;