예제 #1
0
 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;
 }
예제 #2
0
 /**
  * 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;
 }