Exemplo n.º 1
0
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     $session = new \Zend\Session\SessionManager();
     $session->start();
     $container = new Container('initialized');
     if (!isset($container->init)) {
         $session->regenerateId(true);
         $container->init = 1;
         $container->userId = 0;
     }
     return $session;
 }
Exemplo n.º 2
0
 /**
  * Form login user authentication
  *
  * @return Redirect
  * @throws Exception
  */
 public function authenticateAction()
 {
     $redirect = 'login';
     $request = $this->getRequest();
     $entityManager = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default');
     $appServiceLoader = $this->recoverAppServiceLoader();
     $configurations = $appServiceLoader->recoverService('configurations');
     $helper = new SetupAbstractControllerHelper();
     $helper->setConfigurations($configurations);
     $helper->setRequest($request);
     $helper->setupZf2appDir();
     $helper->setupAppDirRelativePath();
     $formValidator = new UserFormAuthenticationInputFilter();
     $form = new UserFormAuthentication();
     $form->setInputFilter($formValidator->getInputFilter());
     if ($request->isPost()) {
         $form->setData($request->getPost());
         if ($form->isValid()) {
             // Check authentication...
             $this->getAuthService()->getAdapter()->setIdentity($request->getPost('username'))->setCredential($request->getPost('password'));
             $result = $this->getAuthService()->authenticate();
             foreach ($result->getMessages() as $message) {
                 $this->flashmessenger()->addMessage($message);
             }
             if ($result->isValid()) {
                 $redirect = 'admin';
                 // set session timeout stored in MyAuthStorage class...
                 $this->getSessionStorage()->setRememberMe();
                 // set storage into the auth service
                 $this->getAuthService()->setStorage($this->getSessionStorage());
                 $this->getAuthService()->getStorage()->write($request->getPost('username'));
                 // Search user into db
                 $usersGetterWrapper = new UsersGetterWrapper(new UsersGetter($entityManager));
                 $usersGetterWrapper->setInput(array('username' => $request->getPost('username'), 'password' => $request->getPost('password'), 'adminAccess' => 1, 'limit' => 1));
                 $usersGetterWrapper->setupQueryBuilder();
                 $records = $usersGetterWrapper->getRecords();
                 if (isset($records) and count($records) == 1) {
                     $records = $records[0];
                     // Set ACL
                     $aclSetter = new AclSetter(new Acl());
                     $aclSetter->setUsersRolesGetterWrapper(new UsersRolesGetterWrapper(new UsersRolesGetter($entityManager)));
                     $aclSetter->addRoles($aclSetter->recoverRoles(array()));
                     if ($records['roleName'] === 'WebMaster') {
                         // Assign all permissions
                         $aclSetter->getAcl()->allow($records['roleName']);
                         $wrapper = new UsersRolesPermissionsGetterWrapper(new UsersRolesPermissionsGetter($entityManager));
                         $wrapper->setInput(array());
                         $wrapper->setupQueryBuilder();
                         $permissionsRecords = $wrapper->getRecords();
                         if (empty($permissionsRecords)) {
                             throw new NullException("Error: no permissions stored on database!");
                         }
                         foreach ($permissionsRecords as $permissionsRecord) {
                             $aclSetter->getAcl()->addResource($permissionsRecord['flag']);
                             $aclSetter->getAcl()->allow($records['roleName'], $permissionsRecord['flag']);
                         }
                     } else {
                         $wrapper = new UsersRolesPermissionsRelationsGetterWrapper(new UsersRolesPermissionsRelationsGetter($entityManager));
                         $wrapper->setInput(array('roleId' => $records['roleId']));
                         $wrapper->setupQueryBuilder();
                         $permissionsRecords = $wrapper->getRecords();
                         if (empty($permissionsRecords)) {
                             throw new NullException("Error: no permissions stored on database!");
                         }
                         foreach ($permissionsRecords as $permissionsRecord) {
                             $aclSetter->getAcl()->addResource($permissionsRecord['flag']);
                             $aclSetter->getAcl()->allow($records['roleName'], $permissionsRecord['flag']);
                         }
                     }
                     $sitename = $configurations['sitename'];
                     if (!$sitename) {
                         throw new NullException('Site name is not set. Cannot complete the login');
                     }
                     $ckFinderUploadDir = $helper->getAppDirRelativePath() . '/public/' . $configurations['media_dir'] . $configurations['media_project'] . 'ckfinder_files';
                     $userDetails = new \stdClass();
                     $userDetails->sitename = $sitename;
                     $userDetails->id = $records['id'];
                     $userDetails->name = $records['name'];
                     $userDetails->surname = $records['surname'];
                     $userDetails->email = $records['email'];
                     $userDetails->acl = $aclSetter->getAcl();
                     $userDetails->salt = $records['salt'];
                     $userDetails->passwordLastUpdate = $records['passwordLastUpdate'];
                     $userDetails->role = $records['roleName'];
                     /* Set user session values */
                     $sessionContainer = new SessionContainer();
                     $sessionContainer->offsetSet('userDetails', $userDetails);
                     $sessionContainer->offsetSet('ckFinderUploadDir', $ckFinderUploadDir);
                     /* Regenerate Session ID after login */
                     $manager = new \Zend\Session\SessionManager();
                     $manager->regenerateId();
                     /* Log entering admin area */
                     $logWriter = new LogWriter($entityManager->getConnection());
                     $logWriter->writeLog(array('user_id' => $userDetails->id, 'module_id' => ModulesContainer::contenuti_id, 'message' => "Ingresso nell'area riservata", 'description' => $records['name'] . ' ' . $records['surname'] . " ha effettuato un ingresso nell'area riservata", 'type' => 'info', 'reference_id' => 0, 'backend' => 1));
                 } else {
                     $this->flashmessenger()->addMessage(print_r("Nome utente e \\ o password non validi", 1));
                 }
             }
         } else {
             $sessionContainer = new SessionContainer();
             $loginFailures = $sessionContainer->offsetGet('loginFailures');
             $sessionContainer->offsetSet('loginFailures', $loginFailures);
             foreach ($form->getMessages() as $message) {
                 $this->flashmessenger()->addMessage(print_r($message, 1));
             }
         }
     }
     return $this->redirect()->toRoute($redirect, array("lang" => 'it'));
 }
 function commonLogin($data, $has_encrypt)
 {
     $authService = $this->getServiceLocator()->get('Zend\\Authentication\\AuthenticationService');
     $adapter = $authService->getAdapter();
     $adapter->setIdentityValue($data['email']);
     if ($has_encrypt) {
         $data['password'] = $this->encriptPassword($this->getStaticSalt(), $data['password']);
     }
     $adapter->setCredentialValue($data['password']);
     $authResult = $authService->authenticate();
     if ($authResult->isValid()) {
         // if(!$authResult->getIdentity()->getIsActive()) {
         //     $data['random_number'] = rand();
         //     $helper = $this->CommanHelper();
         //     $user = $helper->updateUser($authResult->getIdentity()->getId(), $data);
         //     $authService->clearIdentity();
         //     $this->activateAccountEmail($user);
         //     return array('status'=>'error', 'data'=>'Please Activate your account , we sent an email with link');
         // }
         // if($authResult->getIdentity()->getIsloggedIn()) {
         //     $last_login_time = $authResult->getIdentity()->getLastLogin();
         //     $current_time = date("Y-m-d H:i:s");
         //     $newtimestamp = strtotime("$last_login_time + 10 minute");
         //     $last_login_time_plus_10_min = date('Y-m-d H:i:s', $newtimestamp);
         //     if($last_login_time_plus_10_min <= $current_time) {
         //         $this->commonLogout();
         //     }
         //     // $this->getResponse()->setStatusCode(400);
         //     return array('status'=>'error', 'data'=>'Sorry you have already logged in another system, your last session is not properly logged out please try after some time');
         // }
         // $data['is_logged_in'] = 1;
         // $data['last_login'] = date("Y-m-d H:i:s");
         $helper = $this->CommanHelper();
         $user = $helper->updateUser($authResult->getIdentity()->getId(), $data);
         $identity = $authResult->getIdentity();
         $sessionManager = new \Zend\Session\SessionManager();
         $sessionManager->regenerateId();
         $user = $identity->toArray();
         unset($user['password']);
         return array('status' => 'ok', 'data' => $user);
     } else {
         // $this->getResponse()->setStatusCode(400);
         return array('status' => 'error', 'data' => "Invalid Credentials");
     }
 }