shop.balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

amazon_login.php (7690B)


      1 <?php
      2 
      3 class ControllerExtensionModuleAmazonLogin extends Controller {
      4 	public function index() {
      5 		$this->load->model('extension/payment/amazon_login_pay');
      6 
      7 		if ($this->config->get('payment_amazon_login_pay_status') && $this->config->get('amazon_login_status') && !$this->customer->isLogged() && !empty($this->request->server['HTTPS'])) {
      8 			// capital L in Amazon cookie name is required, do not alter for coding standards
      9 			if (isset($this->request->cookie['amazon_Login_state_cache'])) {
     10 				setcookie('amazon_Login_state_cache', '', time() - 4815162342);
     11 			}
     12 
     13 			$amazon_payment_js = $this->model_extension_payment_amazon_login_pay->getWidgetJs();
     14 			
     15 			$this->document->addScript($amazon_payment_js);
     16 
     17 			$data['payment_amazon_login_pay_client_id'] = $this->config->get('payment_amazon_login_pay_client_id');
     18 			$data['amazon_login_return_url'] = $this->url->link('extension/module/amazon_login/login', '', true);
     19 			
     20 			if ($this->config->get('payment_amazon_login_pay_test') == 'sandbox') {
     21 				$data['payment_amazon_login_pay_test'] = true;
     22 			}
     23 
     24 			if ($this->config->get('amazon_login_button_type')) {
     25 				$data['amazon_login_button_type'] = $this->config->get('amazon_login_button_type');
     26 			} else {
     27 				$data['amazon_login_button_type'] = 'lwa';
     28 			}
     29 
     30 			if ($this->config->get('amazon_login_button_colour')) {
     31 				$data['amazon_login_button_colour'] = $this->config->get('amazon_login_button_colour');
     32 			} else {
     33 				$data['amazon_login_button_colour'] = 'gold';
     34 			}
     35 
     36 			if ($this->config->get('amazon_login_button_size')) {
     37 				$data['amazon_login_button_size'] = $this->config->get('amazon_login_button_size');
     38 			} else {
     39 				$data['amazon_login_button_size'] = 'medium';
     40 			}
     41 
     42 			if ($this->config->get('payment_amazon_login_pay_language')) {
     43 				$data['payment_amazon_login_pay_language'] = $this->config->get('payment_amazon_login_pay_language');
     44 			} else {
     45 				$data['payment_amazon_login_pay_language'] = 'en-US';
     46 			}
     47 
     48 			return $this->load->view('extension/module/amazon_login', $data);
     49 		}
     50 	}
     51 
     52 	public function login() {
     53 		$this->load->model('extension/payment/amazon_login_pay');
     54 		$this->load->model('account/customer');
     55 		$this->load->model('account/customer_group');
     56 		$this->load->language('extension/payment/amazon_login_pay');
     57 
     58 		unset($this->session->data['lpa']);
     59 		unset($this->session->data['access_token']);
     60 
     61 		if (isset($this->request->get['access_token'])) {
     62 			$this->session->data['access_token'] = $this->request->get['access_token'];
     63 			$user = $this->model_extension_payment_amazon_login_pay->getUserInfo($this->request->get['access_token']);
     64 		} else {
     65 			$user = array();
     66 		}
     67 
     68 		if ((array)$user) {
     69 			if (isset($user->error)) {
     70 				$this->model_extension_payment_amazon_login_pay->logger($user->error . ': ' . $user->error_description);
     71 				$this->session->data['lpa']['error'] = $this->language->get('error_login');
     72 				$this->response->redirect($this->url->link('extension/payment/amazon_login_pay/loginFailure', '', true));
     73 			}
     74 
     75 			$customer_info = $this->model_account_customer->getCustomerByEmail($user->email);
     76 			$this->model_extension_payment_amazon_login_pay->logger($user);
     77 
     78 			if ($customer_info) {
     79 				if ($this->validate($user->email)) {
     80 					unset($this->session->data['guest']);
     81 
     82 					$this->load->model('account/address');
     83 
     84 					if ($this->config->get('config_tax_customer') == 'payment') {
     85 						$payment_address = $this->model_account_address->getAddress($this->customer->getAddressId());
     86 						if($payment_address){
     87 							$this->session->data['payment_address'] = $payment_address;
     88 						}
     89 					}
     90 
     91 					if ($this->config->get('config_tax_customer') == 'shipping') {
     92 						$shipping_address = $this->model_account_address->getAddress($this->customer->getAddressId());
     93 						if($shipping_address){
     94 							$this->session->data['shipping_address'] = $shipping_address;
     95 						}
     96 					}
     97 
     98 					$this->model_extension_payment_amazon_login_pay->logger('Customer logged in - ID: ' . $customer_info['customer_id'] . ', Email: ' . $customer_info['email']);
     99 				} else {
    100 					$this->model_extension_payment_amazon_login_pay->logger('Could not login to - ID: ' . $customer_info['customer_id'] . ', Email: ' . $customer_info['email']);
    101 					$this->session->data['lpa']['error'] = $this->language->get('error_login');
    102 					$this->response->redirect($this->url->link('extension/payment/amazon_login_pay/loginFailure', '', true));
    103 				}
    104 				$this->response->redirect($this->url->link('account/account', '', true));
    105 			} else {
    106 				$country_id = 0;
    107 				$zone_id = 0;
    108 
    109 				$full_name = explode(' ', $user->name);
    110 				$last_name = array_pop($full_name);
    111 				$first_name = implode(' ', $full_name);
    112 
    113 				$data = array(
    114 					'customer_group_id' => (int)$this->config->get('config_customer_group_id'),
    115 					'firstname' => $first_name,
    116 					'lastname' => $last_name,
    117 					'email' => $user->email,
    118 					'telephone' => '',
    119 					'password' => uniqid(rand(), true),
    120 					'company' => '',
    121 					'address_1' => '',
    122 					'address_2' => '',
    123 					'city' => '',
    124 					'postcode' => '',
    125 					'country_id' => (int)$country_id,
    126 					'zone_id' => (int)$zone_id,
    127 				);
    128 
    129 				$customer_id = $this->model_extension_payment_amazon_login_pay->addCustomer($data);
    130 
    131 				$this->model_extension_payment_amazon_login_pay->logger('Customer ID created: ' . $customer_id);
    132 
    133 				if ($this->validate($user->email)) {
    134 					unset($this->session->data['guest']);
    135 
    136 					$this->load->model('account/address');
    137 
    138 					if ($this->config->get('config_tax_customer') == 'payment') {
    139 						$payment_address = $this->model_account_address->getAddress($this->customer->getAddressId());
    140 						if($payment_address){
    141 							$this->session->data['payment_address'] = $payment_address;
    142 						}
    143 					}
    144 
    145 					if ($this->config->get('config_tax_customer') == 'shipping') {
    146 						$shipping_address = $this->model_account_address->getAddress($this->customer->getAddressId());
    147 						if($shipping_address){
    148 							$this->session->data['shipping_address'] = $shipping_address;
    149 						}
    150 					}
    151 
    152 					$this->model_extension_payment_amazon_login_pay->logger('Customer logged in - ID: ' . $customer_id . ', Email: ' . $user->email);
    153 
    154 					$this->response->redirect($this->url->link('account/account', '', true));
    155 				} else {
    156 					$this->model_extension_payment_amazon_login_pay->logger('Could not login to - ID: ' . $customer_id . ', Email: ' . $user->email);
    157 
    158 					$this->session->data['lpa']['error'] = $this->language->get('error_login');
    159 					$this->response->redirect($this->url->link('extension/payment/amazon_login_pay/loginFailure', '', true));
    160 				}
    161 			}
    162 		} else {
    163 			$this->session->data['lpa']['error'] = $this->language->get('error_login');
    164 			$this->response->redirect($this->url->link('extension/payment/amazon_login_pay/loginFailure', '', true));
    165 		}
    166 	}
    167 
    168 	public function logout() {
    169 		unset($this->session->data['lpa']);
    170 		unset($this->session->data['access_token']);
    171 
    172 		// capital L in Amazon cookie name is required, do not alter for coding standards
    173 		if (isset($this->request->cookie['amazon_Login_state_cache'])) {
    174 			setcookie('amazon_Login_state_cache', '', time() - 4815162342);
    175 		}
    176 	}
    177 
    178 	protected function validate($email) {
    179 		if (!$this->customer->login($email, '', true)) {
    180 			$this->error['warning'] = $this->language->get('error_login');
    181 		}
    182 
    183 		$customer_info = $this->model_account_customer->getCustomerByEmail($email);
    184 
    185 		if ($customer_info && !$customer_info['status']) {
    186 			$this->error['warning'] = $this->language->get('error_approved');
    187 		}
    188 
    189 		return !$this->error;
    190 	}
    191 
    192 }