Skip to content

Commit

Permalink
Edit user - change/reset password
Browse files Browse the repository at this point in the history
  • Loading branch information
vgarvardt committed Mar 19, 2013
1 parent 76559ec commit 0789085
Show file tree
Hide file tree
Showing 10 changed files with 354 additions and 158 deletions.
73 changes: 3 additions & 70 deletions Module.php
Expand Up @@ -9,14 +9,10 @@

namespace ZfcUserAdmin;

use Zend\Mvc\ModuleRouteListener;
use Zend\ServiceManager\ServiceLocatorInterface;
use ZfcUser\Form\RegisterFilter;
use ZfcUser\Mapper\UserHydrator;
use ZfcUser\Validator\NoRecordExists;
use Zend\ModuleManager\Feature\ServiceProviderInterface;


class Module
class Module implements ServiceProviderInterface
{
public function getConfig()
{
Expand All @@ -36,69 +32,6 @@ public function getAutoloaderConfig()

public function getServiceConfig()
{
return array(
'invokables' => array(
'ZfcUserAdmin\Form\EditUser' => 'ZfcUserAdmin\Form\EditUser',
'zfcuseradmin_user_service' => 'ZfcUserAdmin\Service\User',
),
'factories' => array(
'zfcuseradmin_module_options' => function (ServiceLocatorInterface $sm) {
$config = $sm->get('Config');
return new Options\ModuleOptions(isset($config['zfcuseradmin']) ? $config['zfcuseradmin'] : array());
},
'zfcuseradmin_edituser_form' => function (ServiceLocatorInterface $sm) {
/** @var $options \ZfcUserAdmin\Options\ModuleOptions */
$options = $sm->get('zfcuseradmin_module_options');
$form = new Form\EditUser(null, $options, $sm);
return $form;
},
'zfcuseradmin_createuser_form' => function (ServiceLocatorInterface $sm) {
/** @var $zfcUserOptions \ZfcUser\Options\UserServiceOptionsInterface */
$zfcUserOptions = $sm->get('zfcuser_module_options');
/** @var $zfcUserAdminOptions \ZfcUserAdmin\Options\ModuleOptions */
$zfcUserAdminOptions = $sm->get('zfcuseradmin_module_options');
$form = new Form\CreateUser(null, $zfcUserAdminOptions, $zfcUserOptions, $sm);
$filter = new RegisterFilter(
new NoRecordExists(array(
'mapper' => $sm->get('zfcuser_user_mapper'),
'key' => 'email'
)),
new NoRecordExists(array(
'mapper' => $sm->get('zfcuser_user_mapper'),
'key' => 'username'
)),
$zfcUserOptions
);
if ($zfcUserAdminOptions->getCreateUserAutoPassword()) {
$filter->remove('password')->remove('passwordVerify');
}
$form->setInputFilter($filter);
return $form;
},
'zfcuser_user_mapper' => function (ServiceLocatorInterface $sm) {
/** @var $config \ZfcUserAdmin\Options\ModuleOptions */
$config = $sm->get('zfcuseradmin_module_options');
$mapperClass = $config->getUserMapper();
if (stripos($mapperClass, 'doctrine') !== false) {
$mapper = new $mapperClass(
$sm->get('zfcuser_doctrine_em'),
$sm->get('zfcuser_module_options')
);
} else {
/** @var $zfcUserOptions \ZfcUser\Options\UserServiceOptionsInterface */
$zfcUserOptions = $sm->get('zfcuser_module_options');

/** @var $mapper \ZfcUserAdmin\Mapper\UserZendDb */
$mapper = new $mapperClass();
$mapper->setDbAdapter($sm->get('zfcuser_zend_db_adapter'));
$entityClass = $zfcUserOptions->getUserEntityClass();
$mapper->setEntityPrototype(new $entityClass);
$mapper->setHydrator(new UserHydrator());
}

return $mapper;
},
),
);
return include __DIR__ . '/config/services.config.php';
}
}
48 changes: 44 additions & 4 deletions README.md
@@ -1,14 +1,19 @@
# ZfcUserAdmin Module for Zend Framework 2

Version 0.0.1 Created by [Daniel Strøm](https://github.com/Danielss89) and [Martin Shwalbe](https://github.com/Hounddog)
Version 0.1

## Introduction

This module provides an interface to create/edit new users.
This module provides an interface to create/edit/delete users.

## Installation

### Main Setup
### Using composer

1. Add `danielss89/zfc-user-admin` (version `dev-master`) to requirements
2. Run `update` command on composer

### Manually

1. Clone this project into your `./vendor/` directory and enable it in your
`application.config.php` file.
Expand All @@ -21,4 +26,39 @@ This module provides an interface to create/edit new users.
2. ZfcUser

## Usage
soon to come

### Override default module config

Copy `<zfc-user-admin>/config/ZfcUserAdmin.global.php.dist` to `<project root>/autoload/ZfcUserAdmin.global.php` and
edit required module options (full list will be added to doc later, for now you can find all available options in
`<zfc-user-admin>/src/Options/ModuleOptions.php` - just look at class properties and convert upper case to
dash plus lower case, e.g. createUserAutoPassword -> create_user_auto_password). E.g.:

```
<?php
/**
* ZfcUserAdmin Configuration
*/
$settings = array(
'user_mapper' => 'ZfcUserAdmin\Mapper\UserZendDb',
'user_list_elements' => array('Id' => 'id', 'Name' => 'display_name', 'Email address' => 'email'),
'create_user_auto_password' => false,
...
);
/**
* You do not need to edit below this line
*/
return array(
'zfcuseradmin' => $settings
);
```

TODO: add more usage information and module options list

## Authors

* [Daniel Strøm](https://github.com/Danielss89)
* [Martin Shwalbe](https://github.com/Hounddog)
* [Vladimir Garvardt](https://github.com/vgarvardt)
98 changes: 98 additions & 0 deletions config/services.config.php
@@ -0,0 +1,98 @@
<?php
/**
* User: Vladimir Garvardt
* Date: 3/18/13
* Time: 6:39 PM
*/
use Zend\ServiceManager\ServiceLocatorInterface;
use ZfcUser\Form\RegisterFilter;
use ZfcUser\Mapper\UserHydrator;
use ZfcUser\Validator\NoRecordExists;
use ZfcUserAdmin\Form;
use ZfcUserAdmin\Options;
use ZfcUserAdmin\Validator\NoRecordExistsEdit;

return array(
'invokables' => array(
'ZfcUserAdmin\Form\EditUser' => 'ZfcUserAdmin\Form\EditUser',
'zfcuseradmin_user_service' => 'ZfcUserAdmin\Service\User',
),
'factories' => array(
'zfcuseradmin_module_options' => function (ServiceLocatorInterface $sm) {
$config = $sm->get('Config');
return new Options\ModuleOptions(isset($config['zfcuseradmin']) ? $config['zfcuseradmin'] : array());
},
'zfcuseradmin_edituser_form' => function (ServiceLocatorInterface $sm) {
/** @var $zfcUserOptions \ZfcUser\Options\UserServiceOptionsInterface */
$zfcUserOptions = $sm->get('zfcuser_module_options');
/** @var $zfcUserAdminOptions \ZfcUserAdmin\Options\ModuleOptions */
$zfcUserAdminOptions = $sm->get('zfcuseradmin_module_options');
$form = new Form\EditUser(null, $zfcUserAdminOptions, $zfcUserOptions, $sm);
$filter = new RegisterFilter(
new NoRecordExistsEdit(array(
'mapper' => $sm->get('zfcuser_user_mapper'),
'key' => 'email'
)),
new NoRecordExistsEdit(array(
'mapper' => $sm->get('zfcuser_user_mapper'),
'key' => 'username'
)),
$zfcUserOptions
);
if (!$zfcUserAdminOptions->getAllowPasswordChange()) {
$filter->remove('password')->remove('passwordVerify');
} else {
$filter->get('password')->setRequired(false);
$filter->remove('passwordVerify');
}
$form->setInputFilter($filter);
return $form;
},
'zfcuseradmin_createuser_form' => function (ServiceLocatorInterface $sm) {
/** @var $zfcUserOptions \ZfcUser\Options\UserServiceOptionsInterface */
$zfcUserOptions = $sm->get('zfcuser_module_options');
/** @var $zfcUserAdminOptions \ZfcUserAdmin\Options\ModuleOptions */
$zfcUserAdminOptions = $sm->get('zfcuseradmin_module_options');
$form = new Form\CreateUser(null, $zfcUserAdminOptions, $zfcUserOptions, $sm);
$filter = new RegisterFilter(
new NoRecordExists(array(
'mapper' => $sm->get('zfcuser_user_mapper'),
'key' => 'email'
)),
new NoRecordExists(array(
'mapper' => $sm->get('zfcuser_user_mapper'),
'key' => 'username'
)),
$zfcUserOptions
);
if ($zfcUserAdminOptions->getCreateUserAutoPassword()) {
$filter->remove('password')->remove('passwordVerify');
}
$form->setInputFilter($filter);
return $form;
},
'zfcuser_user_mapper' => function (ServiceLocatorInterface $sm) {
/** @var $config \ZfcUserAdmin\Options\ModuleOptions */
$config = $sm->get('zfcuseradmin_module_options');
$mapperClass = $config->getUserMapper();
if (stripos($mapperClass, 'doctrine') !== false) {
$mapper = new $mapperClass(
$sm->get('zfcuser_doctrine_em'),
$sm->get('zfcuser_module_options')
);
} else {
/** @var $zfcUserOptions \ZfcUser\Options\UserServiceOptionsInterface */
$zfcUserOptions = $sm->get('zfcuser_module_options');

/** @var $mapper \ZfcUserAdmin\Mapper\UserZendDb */
$mapper = new $mapperClass();
$mapper->setDbAdapter($sm->get('zfcuser_zend_db_adapter'));
$entityClass = $zfcUserOptions->getUserEntityClass();
$mapper->setEntityPrototype(new $entityClass);
$mapper->setHydrator(new UserHydrator());
}

return $mapper;
},
),
);
73 changes: 54 additions & 19 deletions src/ZfcUserAdmin/Controller/UserAdminController.php
Expand Up @@ -4,12 +4,15 @@

use Zend\Mvc\Controller\AbstractActionController;
use Zend\Paginator;
use Zend\Stdlib\Hydrator\ClassMethods;
use ZfcUser\Mapper\UserInterface;
use ZfcUser\Options\ModuleOptions as ZfcUserModuleOptions;
use ZfcUserAdmin\Options\ModuleOptions;

class UserAdminController extends AbstractActionController
{
protected $options, $userMapper;
protected $zfcUserOptions;
/**
* @var \ZfcUserAdmin\Service\User
*/
Expand All @@ -35,46 +38,61 @@ public function listAction()

public function createAction()
{
/** @var $form \ZfcUserAdmin\Form\CreateUser */
$form = $this->getServiceLocator()->get('zfcuseradmin_createuser_form');
$request = $this->getRequest();

$user = false;
/** @var $request \Zend\Http\Request */
if ($request->isPost()) {
$user = $this->getAdminUserService()->create((array)$request->getPost());
}

if (!$user) {
return array(
'createUserForm' => $form
);
$zfcUserOptions = $this->getZfcUserOptions();
$class = $zfcUserOptions->getUserEntityClass();
$user = new $class();
$form->setHydrator(new ClassMethods());
$form->bind($user);
$form->setData($request->getPost());

if ($form->isValid()) {
$user = $this->getAdminUserService()->create($form, (array)$request->getPost());
if ($user) {
$this->flashMessenger()->addSuccessMessage('The user was created');
return $this->redirect()->toRoute('zfcadmin/zfcuseradmin/list');
}
}
}

$this->flashMessenger()->addSuccessMessage('The user was created');
return $this->redirect()->toRoute('zfcadmin/zfcuseradmin/list');
return array(
'createUserForm' => $form
);
}

public function editAction()
{
$userId = $this->getEvent()->getRouteMatch()->getParam('userId');
$user = $this->getUserMapper()->findById($userId);

/** @var $form \ZfcUserAdmin\Form\EditUser */
$form = $this->getServiceLocator()->get('zfcuseradmin_edituser_form');
$form->setUser($user);

/** @var $request \Zend\Http\Request */
$request = $this->getRequest();
if (!$request->isPost()) {
if ($request->isPost()) {
$form->setData($request->getPost());
if ($form->isValid()) {
$user = $this->getAdminUserService()->edit($form, (array)$request->getPost(), $user);
if ($user) {
$this->flashMessenger()->addSuccessMessage('The user was edited');
return $this->redirect()->toRoute('zfcadmin/zfcuseradmin/list');
}
}
} else {
$form->populateFromUser($user);
return array(
'editUserForm' => $form,
'userId' => $userId
);
}

$this->getAdminUserService()->edit(get_object_vars($request->getPost()), $user);

$this->flashMessenger()->addSuccessMessage('The user was edited');
return $this->redirect()->toRoute('zfcadmin/zfcuseradmin/list');
return array(
'editUserForm' => $form,
'userId' => $userId
);
}

public function removeAction()
Expand Down Expand Up @@ -137,4 +155,21 @@ public function setAdminUserService($service)
$this->adminUserService = $service;
return $this;
}

public function setZfcUserOptions(ZfcUserModuleOptions $options)
{
$this->zfcUserOptions = $options;
return $this;
}

/**
* @return \ZfcUser\Options\ModuleOptions
*/
public function getZfcUserOptions()
{
if (!$this->zfcUserOptions instanceof ZfcUserModuleOptions) {
$this->setZfcUserOptions($this->getServiceLocator()->get('zfcuser_module_options'));
}
return $this->zfcUserOptions;
}
}

0 comments on commit 0789085

Please sign in to comment.