public function loginAction()
 {
     // kiểm tra nếu đã đăng nhập rồi thì không cho zô
     $read = $this->getAuthService()->getStorage()->read();
     if (isset($read['username']) and $read['username']) {
         return $this->redirect()->toRoute('application/crud', array('action' => 'index'));
     }
     // tạo form login
     $login_form = $this->getServiceLocator()->get('Permission\\Form\\LoginForm');
     $return_array = array();
     $return_array['login_form'] = $login_form;
     // tạo url mặc định
     $url_login = '******';
     $return_array['url_login'] = $url_login;
     // Kiểm tra có phải request POST
     if ($this->request->isPost()) {
         $post = $this->request->getPost();
         // lấy địa chỉ mặc định để quay lại
         if (isset($post['url'])) {
             $url_login = $post['url'];
             $return_array['url_login'] = $post['url'];
         }
         $login_form->setData($post);
         if ($login_form->isValid()) {
             $username = $post['username'];
             $password = $post['password'];
             // lấy dữ liệu theo user name
             $jos_users_table = $this->getServiceLocator()->get('Permission\\Model\\JosUsersTable');
             $user_exist = $jos_users_table->getGiangVienByArrayConditionAndArrayColumns(array('username' => $username), array('password', 'id'));
             if ($user_exist and isset($user_exist[0]['password'])) {
                 $array_password = explode(':', $user_exist[0]['password']);
                 //$password=$array_password[0].':'.md5($password);
                 $password = md5($password);
                 // Xác định lớp chứng thực authentication
                 $this->getAuthService()->getAdapter()->setIdentity($username)->setCredential($password);
                 $result = $this->getAuthService()->authenticate();
                 if ($result->isValid()) {
                     $storage = new MyAuthStorage();
                     $storage->forgetMe();
                     $jos_admin_resource_table = $this->getServiceLocator()->get('Permission\\Model\\JosAdminResourceTable');
                     $white_list = $jos_admin_resource_table->getResourceByUsername($username);
                     $this->getAuthService()->getStorage()->write(array('username' => $username, 'white_list' => $white_list));
                     // lastime login
                     $jos_lasttime_login_table = $this->getServiceLocator()->get('Permission\\Model\\JosUserLasttimeLoginTable');
                     $user_lastime_login_exist = $jos_lasttime_login_table->getJosUserLasttimeLoginByArrayConditionAndArrayColumn(array('user_id' => $user_exist[0]['id']), array());
                     $new_lasttime_login = new JosUserLasttimeLogin();
                     if ($user_lastime_login_exist) {
                         $new_lasttime_login->exchangeArray($user_lastime_login_exist[0]);
                     }
                     $new_lasttime_login->setUserId($user_exist[0]['id']);
                     $new_lasttime_login->setLasttimeLogin(date("Y-m-d H:i:s"));
                     $jos_lasttime_login_table->saveJosUserLasttimeLogin($new_lasttime_login);
                     // thông báo đăng nhập thành công
                     $this->flashMessenger()->addSuccessMessage('Đăng nhập thành công!');
                     return $this->redirect()->toUrl($url_login);
                 }
             }
         }
     }
     $return_array['login_form'] = $login_form;
     return $return_array;
 }
 public function loginAction()
 {
     $this->layout('layout/layout_default');
     // kiểm tra nếu đã đăng nhập rồi thì không cho zô
     $read = $this->getAuthService()->getStorage()->read();
     if (isset($read['user_id']) and $read['user_id']) {
         return $this->redirect()->toRoute('hang_hoa');
     }
     // tạo form login
     $login_form = $this->getServiceLocator()->get('Permission\\Form\\LoginForm');
     $return_array = array();
     $return_array['login_form'] = $login_form;
     // tạo url mặc định
     $url_login = '******';
     $return_array['url_login'] = $url_login;
     // Kiểm tra có phải request POST
     if ($this->request->isPost()) {
         $post = $this->request->getPost();
         // lấy địa chỉ mặc định để quay lại
         if (isset($post['url'])) {
             $url_login = $post['url'];
             $return_array['url_login'] = $post['url'];
         }
         $login_form->setData($post);
         if ($login_form->isValid()) {
             $username = $post['username'];
             $password = $post['password'];
             $user_table = $this->getServiceLocator()->get('Permission\\Model\\UserTable');
             $user_exist = $user_table->getUserByArrayConditionAndArrayColumn(array('username' => $username, 'state' => 1), array('user_id'));
             if ($user_exist) {
                 // Xác định lớp chứng thực authentication
                 $this->getAuthService()->getAdapter()->setIdentity($username)->setCredential($password);
                 $result = $this->getAuthService()->authenticate();
                 if ($result->isValid()) {
                     $storage = new MyAuthStorage();
                     $storage->forgetMe();
                     $jos_admin_resource_table = $this->getServiceLocator()->get('Permission\\Model\\JosAdminResourceTable');
                     $user = $user_table->getUserByArrayConditionAndArrayColumn(array('username' => $username), array('user_id', 'id_kho'));
                     $user_id = $user[0]['user_id'];
                     $id_kho = $user[0]['id_kho'];
                     $white_list = $jos_admin_resource_table->getResourceByUsername($username);
                     $this->getAuthService()->getStorage()->write(array('user_id' => $user_id, 'id_kho' => $id_kho, 'white_list' => $white_list));
                     // thông báo đăng nhập thành công
                     $this->flashMessenger()->addSuccessMessage('Đăng nhập thành công!');
                     return $this->redirect()->toRoute('hang_hoa');
                     //return $this->redirect()->toUrl($url_login);
                 } else {
                     $return_array['login_form'] = $login_form;
                     return $return_array;
                 }
             } else {
                 $login_form->get('username')->setMessages(array('Tên đăng nhập không tồn tại'));
                 $return_array['login_form'] = $login_form;
                 return $return_array;
             }
         }
     }
     $return_array['login_form'] = $login_form;
     return $return_array;
 }