Skip to content
Snippets Groups Projects
module.config.php 21.1 KiB
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\MyResearchController;
    use fid\Controller\MyResearchControllerFactory;
    use fid\Controller\OrderController;
    use fid\Controller\OrderControllerFactory;
    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\UserDeleteModel;
    use fid\FormModel\UsernameChangeModel;
    use fid\Helper\Rss;
    use fid\Helper\TranslatorDelegator;
    use fid\Hydrator\OrderHydrator;
    use fid\Hydrator\UserHydrator;
    use fid\Hydrator\UserHydratorDelegatorFactory;
    use fid\Listener\ClientConfigListener;
    use fid\Listener\ErrorListener;
    use fid\Listener\LocaleListener;
    use fid\Serializer\OrderCreationRequestUserNormalizer;
    use fid\Service\Client;
    use fid\Service\ClientFactory;
    use fid\View\Helper\Root\FormLabel;
    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;
        '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',
        'fid-acquisition-digitization-form'        => require 'fid-acquisition-digitization-form.php',
        'fid-acquisition-digitization-missing-record-form'        => require 'fid-acquisition-digitization-missing-record-form.php',
        'order-edit-form-basic'              => require 'order-edit-form-basic.php',
        'order-edit-form-complete'           => require 'order-edit-form-complete.php',
        PasswordResetModel::class                  => require 'password-reset-form.php',
        PasswordChangeModel::class                 => require 'password-change-form.php',
        UsernameChangeModel::class                 => require 'username-change-form.php',
        UserDeleteModel::class                     => require 'user-delete-form.php',
    ],
    'filters'            => [
        'factories' => [
            PermissionsFilter::class => PermissionsFilterFactory::class,
        ]
    ],
    'hydrators'          => [
        'factories'  => [
            UserHydrator::class  => InvokableFactory::class,
            OrderHydrator::class => InvokableFactory::class,
            OrderMissingRecordHydrator::class => InvokableFactory::class,
        ],
        'delegators' => [
            UserHydrator::class => [
                UserHydratorDelegatorFactory::class,
            ],
        ],
            RecordController::class => AbstractBaseWithConfigFactory::class,
            UserController::class   => UserControllerFactory::class,
            OrderController::class => OrderControllerFactory::class,
            MyResearchController::class => MyResearchControllerFactory::class,
            \VuFind\Controller\RecordController::class => RecordController::class,
            \VuFind\Controller\MyResearchController::class => MyResearchController::class,
        ],
        'delegators' => [
            RecordController::class => [
        ErrorListener::class,
        LocaleListener::class,
Sebastian Kehr's avatar
Sebastian Kehr committed
        ClientConfigListener::class,
    // TODO: issue PR to add alias to vufind core
    'controller_plugins' => [
        'aliases' => [
            'flashmessenger' => FlashMessenger::class,
        ]
    ],
        '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,
Sebastian Kehr's avatar
Sebastian Kehr committed
            ClientConfigListener::class => InvokableFactory::class
    'view_helpers'       => [
        'aliases'   => [
            'formLabel' => FormLabel::class,
            'rss' => Rss::class
        ],
        'factories' => [
            FormLabel::class => InvokableFactory::class,
            Rss::class => \fid\Helper\RssFactory::class
        'plugin_managers' => [
                'factories' => [
                    'fid\AjaxHandler\GetResolverLinks' =>
                        'fid\AjaxHandler\GetResolverLinksFactory'
                ],
                    '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,
                ],
            ],
                'aliases'   => [
                    'fid' => Fid::class,
                ],
                'factories' => [
                    Fid::class => FidFactory::class,
                ],
            ],
                'invokables' => [
                    'worldcat' => 'fid\RecordTab\Worldcat',
                ],
            ],
            'resolver_driver' => [
                        FincResolverDriverFactory::class,
                ],
                'delegators' => [
                    Ezb::class => [
                        EzbDelegatorFactory::class,
                    ],
                ],
                    'ezb' => Ezb::class,
    // Authorization configuration:
        'vufind_permission_provider_manager' => [
            'factories' => [
                'fid\Role\PermissionProvider\FidApiPermission' =>
                    'fid\Role\PermissionProvider\FidApiPermissionFactory'
                'FidApiPermission' => 'fid\Role\PermissionProvider\FidApiPermission'
            ]
        ]
    ],
        'routes' => [
            'fid'                => [
                'type'          => 'literal',
                'may_terminate' => false,
                'options'       => [
                    'route' => '/fid',
                ],
                'child_routes'  => [
                        'may_terminate' => false,
                        'type'          => 'literal',
                        'options'       => [
                            'route' => '/user',
                        ],
                        'child_routes'  => [
                                'may_terminate' => true,
                                'type'          => 'literal',
                                'options'       => [
                                    'route'    => '/init',
                                    'defaults' => [
                                        'controller' => UserController::class,
                                        'action'     => 'init',
                                    ],
                                ],
                            ],
                                'type'    => 'literal',
                                'options' => [
                                    'route'    => '/create',
                                    'defaults' => [
                                        'controller' => UserController::class,
                                        'action'     => 'create',
                                    ],
                                ],
                            ],
                                'type'    => 'literal',
                                'options' => [
                                    'route'    => '/update',
                                    'defaults' => [
                                        'controller' => UserController::class,
                                        'action'     => 'update',
                                    ],
                                ],
                            ],
                                'type'    => 'literal',
                                'options' => [
                                    'route'    => '/policy',
                                    'defaults' => [
                                        'controller' => UserController::class,
                                        'action'     => 'policy',
                                    ],
                                ],
                            ],
                                'type'    => 'literal',
                                'options' => [
                                    'route'    => '/terms',
                                    'defaults' => [
                                        'controller' => UserController::class,
                                        'action'     => 'terms',
                                    ],
                                ],
                            ],
                                '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',
                                    ],
                                ],
                                'type'    => 'literal',
                                'options' => [
                                    'route'    => '/orders',
                                    'defaults' => [
                                        'controller' => OrderController::class,
                                        'action'     => 'orders',
                                    ],
                                ],
                            ],
                            'delete' => [
                                'type'    => 'literal',
                                'options' => [
                                    'route'    => '/delete',
                                    'defaults' => [
                                        'controller' => UserController::class,
                                        'action'     => 'delete',
                                    ],
                                ],
                            ],
                        'may_terminate' => false,
                        'type'          => 'literal',
                        'options'       => [
                            'route' => '/admin'
                        ],
                        'child_routes'  => [
                                'type'    => 'literal',
                                'options' => [
                                    'route'    => '/list',
                                    'defaults' => [
                                        'controller' => UserController::class,
                                        'action'     => 'list',
                                    ],
                                ],
                            ],
                                'type'    => 'Zend\Router\Http\Segment',
                                'options' => [
                                    'route'    => '/exportList/[:mode]',
                                    'defaults' => [
                                        'controller' => UserController::class,
                                        'action'     => 'exportList',
                                        'mode'       => 'default'
                            'orderExport' => [
                                'type'    => 'Zend\Router\Http\Segment',
                                'options' => [
                                    'route'    => '/orderExport/[:mode]',
                                    'defaults' => [
                                        'controller' => OrderController::class,
                                        'action'     => 'export',
                                        'mode'       => 'default'
                                    ],
                                ],
                            ],
                                'type'    => 'Zend\Router\Http\Segment',
                                'options' => [
                                    'route'    => '/edit/[:userid]',
                                    'defaults' => [
                                        'controller' => UserController::class,
                                        'action'     => 'edit',
                                        'userid'     => null
                                    ],
                                ],
                            ],
                                'type'    => 'literal',
                                'options' => [
                                    'route'    => '/orders',
                                    'defaults' => [
                                        'controller' => OrderController::class,
                            'editOrder'       => [
                                'type'    => 'Zend\Router\Http\Segment',
                                'options' => [
                                    'route'    => '/editOrder/[:orderid]',
                                    'defaults' => [
                                        'controller' => OrderController::class,
                                        'action'     => 'editOrder',
                                        'orderid'     => null
                                    ],
                                ],
                            ],
                            'deleteOrder'       => [
                                'type'    => 'Zend\Router\Http\Segment',
                                'options' => [
                                    'route'    => '/deleteOrder/[:orderid]',
                                    'defaults' => [
                                        'controller' => OrderController::class,
                                        'action'     => 'deleteOrder',
                                        'orderid'     => null
                                    ],
                                ],
                            ],
                ],
            ],
            '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 = [
    'fidSubitoPartialCopy',
    'fidDigitization',
    'fidDigitizationMissingRecord'
];

// 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;