public function registerAction() { $registerForm = new Register(); $registerForm->setInputFilter(new \Frontend\Login\Form\Filter\Register($this->getEntityManager())); $loginForm = new Login(); $loginForm->init(); if ($this->request->isPost()) { $registerForm->setData($this->getRequest()->getPost()); if ($registerForm->isValid()) { $data = $registerForm->getData(); $benutzer = new Benutzer(); $benutzer->setUsername($data['username']); $benutzer->setPassword($data['password']); $benutzer->setEmail($data['email']); $benutzer->setDisabled(false); $benutzer->setRegisterDate(date('c')); $gruppe = $this->getEntityManager()->getReference('Auth\\Entity\\Role', 1); $benutzer->setGruppe($gruppe); $this->getEntityManager()->persist($benutzer); $this->getEntityManager()->flush(); /** @var GATracking $analytics */ $analytics = $this->getServiceLocator()->get(GATracking::class); /** @var Event $eventTracker */ $eventTracker = $analytics->createTracking('Event'); $eventTracker->setEventCategory('User'); $eventTracker->setEventAction('Register'); $eventTracker->setEventLabel($benutzer->getUsername()); $eventTracker->setEventValue($benutzer->getId()); $analytics->sendTracking($eventTracker); // login /** @var Acl $authService */ $authService = $this->getServiceLocator()->get('AuthService'); $authService->instantLogin($benutzer); return $this->redirect()->toRoute('frontend/user/home'); } else { $registerForm->populateValues($this->getRequest()->getPost()); } } $viewModel = new ViewModel(); $viewModel->setVariable('loginForm', $loginForm); $viewModel->setVariable('registerForm', $registerForm); $viewModel->setTemplate('/login/login.phtml'); return $viewModel; }
/** * Registriert die Module aus der DB mit Zend/Auth * Setzt die Rechte der Gruppen * * @param $sm */ public function __construct($sm) { $authSessionStorage = new Session('AUTH_IDENTITY'); parent::__construct($authSessionStorage); $em = $sm->get('Doctrine\\ORM\\EntityManager'); $acl = new ZendAcl(); // add roles foreach ($em->getRepository('Auth\\Entity\\Role')->findBy(array(), array('parentId' => 'ASC')) as $role) { if ($role->parent) { $parentName = $role->parent->name; } else { $parentName = null; } $acl->addRole(new GenericRole($role->name), $parentName); } // add resources + action foreach ($em->getRepository('Auth\\Entity\\Resource')->findBy(array(), array('modul' => 'DESC')) as $resource) { $ressouceName = $resource->modul; if ($resource->action) { $ressouceName .= '/' . $resource->action; } if ($resource->subAction) { $ressouceName .= '/' . $resource->subAction; } $acl->addResource(new GenericResource($ressouceName)); } unset($ressouceName); // deny all $acl->deny(null); // add permissions foreach ($em->getRepository('Auth\\Entity\\Permission')->findAll() as $permission) { // allow $permissionName = $permission->resource->modul; if ($permission->resource->action) { $permissionName .= '/' . $permission->resource->action; } if ($permission->resource->subAction) { $permissionName .= '/' . $permission->resource->subAction; } $acl->allow($permission->gruppe->name, $permissionName); } // register identity if (!$this->hasIdentity()) { // register as gast $benutzer = new Benutzer(); $benutzer->setUsername('Unbekannter User'); $benutzer->setId(0); $benutzer->setLoggedIn(false); $gruppe = new Role(); $gruppe->id = 2; $gruppe->name = 'Gast'; $gruppe->supervisor = 0; $benutzer->setGruppe($gruppe); if (!$benutzer) { throw new \Exception('Gastbenutzer mit der ID -1 nicht vorhanden - bitte direkt in der Datenbank anlegen'); } $this->getStorage()->write($benutzer); } // register acl in navigation \Zend\View\Helper\Navigation\AbstractHelper::setDefaultAcl($acl); \Zend\View\Helper\Navigation\AbstractHelper::setDefaultRole($this->getIdentity()->getGruppe()->name); $this->acl = $acl; $this->sm = $sm; $this->em = $em; return $this; }