Advertisement
RalfEggert

UserModule

Aug 31st, 2012
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 10.95 KB | None | 0 0
  1. <?php
  2. /**
  3.  * namespace definition and usage
  4.  */
  5. namespace User;
  6.  
  7. use Application\Listener\ModuleListener;
  8. use User\Acl\Service;
  9. use User\Authentication\DbBcrypt;
  10. use User\Controller\Plugin\IsAllowed as IsAllowedControllerPlugin;
  11. use User\Entity\User as UserEntity;
  12. use User\Filter\UserLoginFilter;
  13. use User\Filter\UserPasswordFilter;
  14. use User\Filter\UserRegisterFilter;
  15. use User\Filter\UserUpdateFilter;
  16. use User\Form\UserDeleteForm;
  17. use User\Form\UserLoginForm;
  18. use User\Form\UserPasswordForm;
  19. use User\Form\UserSaveForm;
  20. use User\Listener\RouteListener;
  21. use User\Mapper\User as UserMapper;
  22. use User\Mapper\UserHydrator;
  23. use User\Options\ModuleOptions;
  24. use User\Service\User as UserService;
  25. use User\Table\User as UserTable;
  26. use User\View\Helper\IsAllowed as IsAllowedViewHelper;
  27. use User\View\Helper\ShowUserWidget;
  28. use Zend\Authentication\AuthenticationService;
  29. use Zend\EventManager\EventInterface;
  30. use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
  31. use Zend\ModuleManager\Feature\BootstrapListenerInterface;
  32. use Zend\ModuleManager\Feature\ConfigProviderInterface;
  33. use Zend\ModuleManager\Feature\ControllerPluginProviderInterface;
  34. use Zend\ModuleManager\Feature\ServiceProviderInterface;
  35. use Zend\ModuleManager\Feature\ViewHelperProviderInterface;
  36.  
  37. /**
  38.  * User module
  39.  *
  40.  * Handles the user module
  41.  *
  42.  * @package    Application
  43.  * @author     Ralf Eggert <r.eggert@travello.de>
  44.  * @copyright  Copyright (c) 2012 Travello GmbH
  45.  */
  46. class Module implements AutoloaderProviderInterface, BootstrapListenerInterface, ConfigProviderInterface,
  47.                         ControllerPluginProviderInterface, ServiceProviderInterface, ViewHelperProviderInterface
  48. {
  49.     /**
  50.      * Listen to the bootstrap event
  51.      *
  52.      * @return array
  53.      */
  54.     public function onBootstrap(EventInterface $e)
  55.     {
  56.         // add module listener
  57.         $e->getApplication()->getEventManager()->attachAggregate(
  58.             new ModuleListener(__NAMESPACE__, __DIR__ . '/language')
  59.         );
  60.        
  61.         // add route listener
  62.         $e->getApplication()->getEventManager()->attachAggregate(
  63.             new RouteListener()
  64.         );
  65.     }
  66.    
  67.     /**
  68.      * Return an array for passing to Zend\Loader\AutoloaderFactory.
  69.      *
  70.      * @return array
  71.      */
  72.     public function getAutoloaderConfig()
  73.     {
  74.         return array(
  75.             'Zend\Loader\ClassMapAutoloader' => array(
  76.                 __DIR__ . '/autoload_classmap.php',
  77.             ),
  78.             'Zend\Loader\StandardAutoloader' => array(
  79.                 'namespaces' => array(
  80.                     __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
  81.                 ),
  82.             ),
  83.         );
  84.     }
  85.  
  86.     /**
  87.      * Returns configuration to merge with application configuration
  88.      *
  89.      * @return array|\Traversable
  90.      */
  91.     public function getConfig()
  92.     {
  93.         return include __DIR__ . '/config/module.config.php';
  94.     }
  95.    
  96.     /**
  97.      * Expected to return \Zend\ServiceManager\Config object or array to
  98.      * seed such an object.
  99.      *
  100.      * @return array|\Zend\ServiceManager\Config
  101.      */
  102.     public function getViewHelperConfig()
  103.     {
  104.         return array(
  105.             'factories' => array(
  106.                 'ShowUserWidget' =>  function($sm) {
  107.                     $auth       = $sm->getServiceLocator()->get('Zend\Authentication\Service');
  108.                     $loginForm  = $sm->getServiceLocator()->get('User\Service\User')->getLoginForm();
  109.                     $options    = $sm->getServiceLocator()->get('User\Options\Module');
  110.                     $helper     = new ShowUserWidget($auth, $loginForm, $options);
  111.                     return $helper;
  112.                 },
  113.                 'IsAllowed' =>  function($sm) {
  114.                     $acl        = $sm->getServiceLocator()->get('User\Acl\Service');
  115.                     $helper     = new IsAllowedViewHelper($acl);
  116.                     return $helper;
  117.                 },
  118.             ),
  119.         );
  120.     }
  121.    
  122.     /**
  123.      * Expected to return \Zend\ServiceManager\Config object or array to
  124.      * seed such an object.
  125.      *
  126.      * @return array|\Zend\ServiceManager\Config
  127.      */
  128.     public function getControllerPluginConfig()
  129.     {
  130.         return array(
  131.             'factories' => array(
  132.                 'isAllowed' =>  function($sm) {
  133.                     $acl        = $sm->getServiceLocator()->get('User\Acl\Service');
  134.                     $plugin     = new IsAllowedControllerPlugin($acl);
  135.                     return $plugin;
  136.                 },
  137.             )
  138.         );
  139.     }
  140.    
  141.     /**
  142.      * Expected to return \Zend\ServiceManager\Config object or array to
  143.      * seed such an object.
  144.      *
  145.      * @return array|\Zend\ServiceManager\Config
  146.      */
  147.     public function getServiceConfig()
  148.     {
  149.         return array(
  150.             'factories' => array(
  151.                 'User\Acl\Service' =>  function($sm) {
  152.                     $config    = $sm->get('Config');
  153.                     $cache     = $sm->get('Application\Cache\Objects');
  154.                     $auth      = $sm->get('Zend\Authentication\Service');
  155.                     $role      = $auth->hasIdentity() ? $auth->getIdentity()->getGroup() : 'guest';
  156.                     $acl       = new Service($role, $config['acl'], $cache);
  157.                     return $acl;
  158.                 },
  159.                 'User\Authentication\DbBcrypt' =>  function($sm) {
  160.                     $mapper    = $sm->get('User\Mapper\User');
  161.                     $options   = $sm->get('User\Options\Module');
  162.                     $adapter   = new DbBcrypt($mapper, $options);
  163.                     return $adapter;
  164.                 },
  165.                 'User\Filter\UserLogin' =>  function($sm) {
  166.                     $adapter   = $sm->get('Zend\Db\Adapter\Adapter');
  167.                     $options   = $sm->get('User\Options\Module');
  168.                     $filter    = new UserLoginFilter($adapter, $options);
  169.                     return $filter;
  170.                 },
  171.                 'User\Filter\UserPassword' =>  function($sm) {
  172.                     $adapter   = $sm->get('Zend\Db\Adapter\Adapter');
  173.                     $options   = $sm->get('User\Options\Module');
  174.                     $filter    = new UserPasswordFilter($adapter, $options);
  175.                     return $filter;
  176.                 },
  177.                 'User\Filter\UserRegister' =>  function($sm) {
  178.                     $adapter   = $sm->get('Zend\Db\Adapter\Adapter');
  179.                     $options   = $sm->get('User\Options\Module');
  180.                     $filter    = new UserRegisterFilter($adapter, $options);
  181.                     return $filter;
  182.                 },
  183.                 'User\Filter\UserUpdate' =>  function($sm) {
  184.                     $adapter   = $sm->get('Zend\Db\Adapter\Adapter');
  185.                     $options   = $sm->get('User\Options\Module');
  186.                     $filter    = new UserUpdateFilter($adapter, $options);
  187.                     return $filter;
  188.                 },
  189.                 'User\Form\UserAdmin' =>  function($sm) {
  190.                     $filter    = $sm->get('User\Filter\UserUpdate');
  191.                     $mapper    = $sm->get('User\Mapper\User');
  192.                     $form      = new UserSaveForm();
  193.                     $form->setInputFilter($filter);
  194.                     $form->setHydrator($mapper->getHydrator());
  195.                     $form->get('status')->setValueOptions($options->getStatusOptions());
  196.                     $form->get('group')->setValueOptions($options->getGroupOptions());
  197.                     return $form;
  198.                 },
  199.                 'User\Form\UserDelete' =>  function($sm) {
  200.                     $form      = new UserDeleteForm();
  201.                     return $form;
  202.                 },
  203.                 'User\Form\UserLogin' =>  function($sm) {
  204.                     $filter    = $sm->get('User\Filter\UserLogin');
  205.                     $form      = new UserLoginForm();
  206.                     $form->setInputFilter($filter);
  207.                     return $form;
  208.                 },
  209.                 'User\Form\UserPassword' =>  function($sm) {
  210.                     $filter    = $sm->get('User\Filter\UserPassword');
  211.                     $form      = new UserPasswordForm();
  212.                     $form->setInputFilter($filter);
  213.                     return $form;
  214.                 },
  215.                 'User\Form\UserRegister' =>  function($sm) {
  216.                     $filter    = $sm->get('User\Filter\UserRegister');
  217.                     $mapper    = $sm->get('User\Mapper\User');
  218.                     $form      = new UserSaveForm();
  219.                     $form->setInputFilter($filter);
  220.                     $form->setHydrator($mapper->getHydrator());
  221.                     $form->remove('id');
  222.                     $form->remove('status');
  223.                     $form->remove('group');
  224.                     return $form;
  225.                 },
  226.                 'User\Form\UserUpdate' =>  function($sm) {
  227.                     $filter    = $sm->get('User\Filter\UserUpdate');
  228.                     $mapper    = $sm->get('User\Mapper\User');
  229.                     $form      = new UserSaveForm();
  230.                     $form->setInputFilter($filter);
  231.                     $form->setHydrator($mapper->getHydrator());
  232.                     $form->remove('status');
  233.                     $form->remove('group');
  234.                     $form->setValidationGroup(array('nickname', 'email', 'password', 'firstname', 'lastname'));
  235.                     return $form;
  236.                 },
  237.                 'User\Mapper\User' =>  function($sm) {
  238.                     $table     = $sm->get('User\Table\User');
  239.                     $mapper    = new UserMapper($table, new UserHydrator());
  240.                     return $mapper;
  241.                 },
  242.                 'User\Options\Module' =>  function($sm) {
  243.                     $config = $sm->get('Config');
  244.                     return new ModuleOptions(isset($config['module_options']) ? $config['module_options'] : array());
  245.                 },
  246.                 'User\Service\User' =>  function($sm) {
  247.                     $mapper    = $sm->get('User\Mapper\User');
  248.                     $options   = $sm->get('User\Options\Module');
  249.                     $auth      = $sm->get('Zend\Authentication\Service');
  250.                     $mailer    = $sm->get('Application\Mail\Mailer');
  251.                     $service   = new UserService($mapper, $options, $auth, $mailer);
  252.                     return $service;
  253.                 },
  254.                 'User\Table\User' =>  function($sm) {
  255.                     $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
  256.                     $table     = new UserTable($dbAdapter);
  257.                     return $table;
  258.                 },
  259.                 'Zend\Authentication\Service' =>  function($sm) {
  260.                     $adapter   = $sm->get('User\Authentication\DbBcrypt');
  261.                     $auth      = new AuthenticationService();
  262.                     $auth->setAdapter($adapter);
  263.                     return $auth;
  264.                 },
  265.             ),
  266.         );
  267.     }
  268. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement