예제 #1
0
 public function loginAction()
 {
     //Verficamos si existe ya una session activa
     if (!SessionManager::sessionExist()) {
         $this->layout('layout/layout_auth');
         //Almacenamos la ruta redirect
         //$reditect_url = $this->params()->fromRoute('redirect_url') && $this->params()->fromRoute('redirect_url')!='/login   ' ? $this->params()->fromRoute('redirect_url') : '/';
         $message = null;
         //Instanciamos nuestro loginForm
         $loginForm = new LoginForm();
         $request = $this->getRequest();
         if ($request->isPost()) {
             //Instanciamos nuestro filtro
             $loginFilter = new LoginFilter();
             $loginForm->setInputFilter($loginFilter->getInputFilter());
             $loginForm->setData($request->getPost());
             if ($loginForm->isValid()) {
                 $empleadoQuery = new EmpleadoQuery();
                 //Si los datos del formulario son correctos ahora hacemos la busqueda a la db
                 $credentialIsValid = $empleadoQuery->filterByEmpleadoNombreusuario($loginForm->get('empleado_nombreusuario')->getValue())->filterByEmpleadoPassword(md5($loginForm->get('empleado_password')->getValue()))->exists();
                 if ($credentialIsValid) {
                     //Creamos la sesion
                     //Obtenemos el objeto empleado
                     $empleado = $empleadoQuery->findOneByEmpleadoNombreusuario($loginForm->get('empleado_nombreusuario')->getValue());
                     //El rol
                     $empleado_rol = $empleado->getRol()->getRolNombre();
                     //El Acl
                     $empleado_aclCollection = \RolmoduloQuery::create()->filterByIdrol($empleado->getIdRol())->find();
                     $empleado_acl = array();
                     foreach ($empleado_aclCollection as $modulo) {
                         $moduloNombre = \ModuloQuery::create()->findOneByIdmodulo($modulo->getIdModulo())->getModuloNombre();
                         array_push($empleado_acl, $moduloNombre);
                     }
                     $empleadoArray = $empleado->toArray(\BasePeer::TYPE_FIELDNAME);
                     //Removemos idrol y password ya que son datos que no necesitamos en la session
                     unset($empleadoArray['idrol']);
                     unset($empleadoArray['empleado_password']);
                     $empleado_session = array('empleado_info' => $empleadoArray, 'empleado_rol' => $empleado_rol, 'empleado_acl' => $empleado_acl);
                     SessionManager::init($empleado_session);
                     return $this->redirect()->toUrl('/');
                 } else {
                     $message = "Nombre de usuario y/o contraseña incorrecta";
                 }
             }
         }
         return new ViewModel(array('form' => $loginForm, 'message' => $message));
     } else {
         return $this->redirect()->toUrl('/');
     }
 }
예제 #2
0
 public function loginAction()
 {
     $form = new LoginForm();
     $form->get('submit')->setValue('Login');
     $request = $this->getRequest();
     if ($request->isPost()) {
         $form->setData($request->getPost());
         if ($form->isValid()) {
             // Redirect to list of albums
             return $this->redirect()->toRoute('album');
         }
     }
     return array('form' => $form);
 }
예제 #3
0
 public function loginAction()
 {
     $form = new LoginForm();
     $form->get('submit')->setValue('Login');
     $messages = null;
     $request = $this->getRequest();
     if ($request->isPost()) {
         $form->setInputFilter(new LoginFilter($this->getServiceLocator()));
         $form->setData($request->getPost());
         if ($form->isValid()) {
             $data = $form->getData();
             // $data = $this->getRequest()->getPost();
             // If you used another name for the authentication service, change it here
             // it simply returns the Doctrine Auth. This is all it does. lets first create the connection to the DB and the Entity
             $authService = $this->getServiceLocator()->get('Zend\\Authentication\\AuthenticationService');
             // Do the same you did for the ordinar Zend AuthService
             $adapter = $authService->getAdapter();
             $adapter->setIdentityValue($data['username']);
             $adapter->setCredentialValue($data['password']);
             $authResult = $authService->authenticate();
             if ($authResult->isValid()) {
                 $identity = $authResult->getIdentity();
                 $authService->getStorage()->write($identity);
                 $time = 1209600;
                 // 14 days 1209600/3600 = 336 hours => 336/24 = 14 days
                 if ($data['rememberme']) {
                     $sessionManager = new \Zend\Session\SessionManager();
                     $sessionManager->rememberMe($time);
                 }
                 return $this->redirect()->toRoute('cms/default', array('controller' => 'user', 'action' => 'index'));
             }
             foreach ($authResult->getMessages() as $message) {
                 $messages .= "{$message}\n";
             }
         }
     }
     return new ViewModel(array('error' => 'Your authentication credentials are not valid', 'form' => $form, 'messages' => $messages));
 }