Newer
Older
<?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\UserHydrator;
use fid\Hydrator\UserHydratorDelegatorFactory;

Sebastian Kehr
committed
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;
'forms' => [

Sebastian Kehr
committed
'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',

Sebastian Kehr
committed
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' => [

Sebastian Kehr
committed
UserHydrator::class => InvokableFactory::class,
OrderHydrator::class => InvokableFactory::class,
],
'delegators' => [
UserHydrator::class => [
UserHydratorDelegatorFactory::class,
],
],
],
'controllers' => [

Sebastian Kehr
committed
'factories' => [
RecordController::class => AbstractBaseWithConfigFactory::class,

Sebastian Kehr
committed
UserController::class => UserControllerFactory::class,

Sebastian Kehr
committed
'aliases' => [
\VuFind\Controller\RecordController::class => RecordController::class,
],
'delegators' => [
RecordController::class => [

Sebastian Kehr
committed
RecordControllerDelegatorFactory::class,
'listeners' => [
ErrorListener::class,
LocaleListener::class,

Sebastian Kehr
committed
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,

Sebastian Kehr
committed
ErrorListener::class => InvokableFactory:: class,
ILSAuthenticator::class => ILSAuthenticatorFactory::class,
LocaleListener::class => InvokableFactory::class,

Sebastian Kehr
committed
BaseUrlListener::class => InvokableFactory::class
'view_helpers' => [
'aliases' => [
'formLabel' => FormLabel::class,
],
'factories' => [
FormLabel::class => InvokableFactory::class,
],
],
'vufind' => [
'plugin_managers' => [

Sebastian Kehr
committed
'ajaxhandler' => [
'factories' => [
'fid\AjaxHandler\GetResolverLinks' =>
'fid\AjaxHandler\GetResolverLinksFactory'
],

Sebastian Kehr
committed
'aliases' => [
'getResolverLinks' =>
'fid\AjaxHandler\GetResolverLinks'
]
],
'aliases' => [
'fid' => Authenticator::class,
],
'factories' => [
Authenticator::class => AuthenticatorFactory::class,
],
],
'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',
],
],
'factories' => [
FincResolverDriverFactory::class,
],
'delegators' => [
Ezb::class => [
EzbDelegatorFactory::class,
],
],
'zfc_rbac' => [
'vufind_permission_provider_manager' => [
'factories' => [
'fid\Role\PermissionProvider\FidApiPermission' =>
'fid\Role\PermissionProvider\Factory::getFidApiPermission'
],
'FidApiPermission' => 'fid\Role\PermissionProvider\FidApiPermission'
]
]
],
'router' => [
'routes' => [
'fid' => [
'type' => 'literal',
'may_terminate' => false,
'options' => [
'route' => '/fid',
],
'child_routes' => [
'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',
],
],

Sebastian Kehr
committed
'orders' => [
'type' => 'literal',
'options' => [
'route' => '/orders',
'defaults' => [
'controller' => UserController::class,
'action' => 'orders',
],
],
],
'may_terminate' => false,
'type' => 'literal',
'options' => [
'route' => '/admin'
],
'child_routes' => [

Sebastian Kehr
committed
'list' => [
'type' => 'literal',
'options' => [
'route' => '/list',
'defaults' => [
'controller' => UserController::class,
'action' => 'list',
],
],
],

Sebastian Kehr
committed
'exportList' => [
'type' => 'literal',
'options' => [
'route' => '/exportList',
'defaults' => [
'controller' => UserController::class,
'action' => 'exportList',
],
],
],

Sebastian Kehr
committed
'edit' => [
'type' => 'Zend\Router\Http\Segment',
'options' => [
'route' => '/edit/[:userid]',
'defaults' => [
'controller' => UserController::class,
'action' => 'edit',
'userid' => null
],
],
],

Sebastian Kehr
committed
'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,
],
],

Sebastian Kehr
committed
'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;