login.php (3320B)
1 <?php 2 class ControllerCommonLogin extends Controller { 3 private $error = array(); 4 5 public function index() { 6 $this->load->language('common/login'); 7 8 $this->document->setTitle($this->language->get('heading_title')); 9 10 if ($this->user->isLogged() && isset($this->request->get['user_token']) && ($this->request->get['user_token'] == $this->session->data['user_token'])) { 11 $this->response->redirect($this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)); 12 } 13 14 if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { 15 $this->session->data['user_token'] = token(32); 16 17 if (isset($this->request->post['redirect']) && (strpos($this->request->post['redirect'], HTTP_SERVER) === 0 || strpos($this->request->post['redirect'], HTTPS_SERVER) === 0)) { 18 $this->response->redirect($this->request->post['redirect'] . '&user_token=' . $this->session->data['user_token']); 19 } else { 20 $this->response->redirect($this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)); 21 } 22 } 23 24 if ((isset($this->session->data['user_token']) && !isset($this->request->get['user_token'])) || ((isset($this->request->get['user_token']) && (isset($this->session->data['user_token']) && ($this->request->get['user_token'] != $this->session->data['user_token']))))) { 25 $this->error['warning'] = $this->language->get('error_token'); 26 } 27 28 if (isset($this->error['warning'])) { 29 $data['error_warning'] = $this->error['warning']; 30 } else { 31 $data['error_warning'] = ''; 32 } 33 34 if (isset($this->session->data['success'])) { 35 $data['success'] = $this->session->data['success']; 36 37 unset($this->session->data['success']); 38 } else { 39 $data['success'] = ''; 40 } 41 42 $data['action'] = $this->url->link('common/login', '', true); 43 44 if (isset($this->request->post['username'])) { 45 $data['username'] = $this->request->post['username']; 46 } else { 47 $data['username'] = ''; 48 } 49 50 if (isset($this->request->post['password'])) { 51 $data['password'] = $this->request->post['password']; 52 } else { 53 $data['password'] = ''; 54 } 55 56 if (isset($this->request->get['route'])) { 57 $route = $this->request->get['route']; 58 59 unset($this->request->get['route']); 60 unset($this->request->get['user_token']); 61 62 $url = ''; 63 64 if ($this->request->get) { 65 $url .= http_build_query($this->request->get); 66 } 67 68 $data['redirect'] = $this->url->link($route, $url, true); 69 } else { 70 $data['redirect'] = ''; 71 } 72 73 if ($this->config->get('config_password')) { 74 $data['forgotten'] = $this->url->link('common/forgotten', '', true); 75 } else { 76 $data['forgotten'] = ''; 77 } 78 79 $data['header'] = $this->load->controller('common/header'); 80 $data['footer'] = $this->load->controller('common/footer'); 81 82 $this->response->setOutput($this->load->view('common/login', $data)); 83 } 84 85 protected function validate() { 86 if (!isset($this->request->post['username']) || !isset($this->request->post['password']) || !$this->user->login($this->request->post['username'], html_entity_decode($this->request->post['password'], ENT_QUOTES, 'UTF-8'))) { 87 $this->error['warning'] = $this->language->get('error_login'); 88 } 89 90 return !$this->error; 91 } 92 }