<?php namespace App\Controller; use App\Controller\AppController; use Cake\Core\Configure; use Cake\Http\Client; use Cake\Routing\Router; class UsersController extends AppController { public function index() { return $this->redirect(['controller' => 'Users', 'action' => 'signin']); } public function signin() { $this->viewBuilder()->layout('blank'); } #Signin public function verify() { $this->viewBuilder()->layout('blank'); $data = $this->request->data(); #$data['data']['ip'] = $this->request->clientIp(); if(!empty($data)){ if(!empty($data['data']['username']) && !empty($data['data']['password'])){ $data['data']['ip'] = $this->request->clientIp();#prr($data); $api_core_signin = Configure::read('Config.apiCore.signin'); $http = new Client(); $response = $http->post($api_core_signin,$data['data'])->body(); $response = json_decode($response,'_full');#prd($response); if(!empty($response)){ if(trim($response['status']) == 'Success'){ $url = Router::url(['controller' => 'Homes', 'action' => 'index'], true); echo "<script>setTimeout(function(){Login.onLogin('".$response['result']['token']."','".$url."','".$response['result']['topic']."')},1000);</script>"; #echo "<script>setTimeout(function(){alert('".$response['result']['token']."')},1000);</script>"; #echo "<script>Login.onLogin('".$response['result']['token']."','".$url."','".$response['result']['topic']."');</script>"; #echo "<button onclick=Login.onLogin('".$response['result']['token']."','".$url."','".$response['result']['topic']."')>CLICK</button>"; #------------------------------------------------------------------ $param = []; $param['topic'] = '/topics/'.$response['result']['topic']; $param['title'] = ''; $param['message'] = ''; $param['badge'] = 1; #$api_notification = 'http://connect05.pakgon.com/api/Notifications/push'; $api_notification = Configure::read('Config.apiCommunication.getNotification'); $http = new Client(); $options = [ 'headers' => [ 'Content-Type' => 'application/x-www-form-urlencoded', ] ]; $response = $http->post($api_notification, $param, $options)->body(); #prr($response); #------------------------------------------------------------------ die; }else{ $this->Flash->error(__('Verify Fail')); return $this->redirect(['controller' => 'Users', 'action' => 'signin']); } }else{ $this->Flash->error(__('Verify Fail')); return $this->redirect(['controller' => 'Users', 'action' => 'signin']); } }else{ $this->Flash->error(__('Data Empty')); return $this->redirect(['controller' => 'Users', 'action' => 'signin']); } } } public function signup() { $this->viewBuilder()->layout('blank'); } #--------------------------------------------------------------------------------------------------- #Signup public function createAccount() { $this->viewBuilder()->layout('blank'); $data = $this->request->data(); if(!empty($data)){ if($this->validateAccount($data)){ $data['data']['ip'] = $this->request->clientIp();#prr($data); $api_core_create_account = Configure::read('Config.apiCore.createAccount'); $http = new Client(); $response = $http->post($api_core_create_account,$data)->body();#prd($response); $response = json_decode($response,'_full'); //debug($response);exit(); if(!empty($response)){ if(trim($response['status']) == 'Success'){ $this->Flash->success(__('create Account completed.')); return $this->redirect(['controller' => 'Users', 'action' => 'pinCode/'.$response['result']['data']['token']]); } elseif ($response['result']['message'] == 'Email Duplicate'){ $this->Flash->error(__('Email Duplicate')); return $this->redirect(['controller' => 'Users', 'action' => 'signup']); }else{ $this->Flash->error(__('create Account Fail')); return $this->redirect(['controller' => 'Users', 'action' => 'signup']); } } }else{ $this->Flash->error(__('Data Empty')); return $this->redirect(['controller' => 'Users', 'action' => 'signin']); } } die; } #--------------------------------------------------------------------------------------------------- function validateAccount($data = null) { $error = []; if(!empty($error)){ $this->set('error',$error); return false; }else{ return true; } } public function notification() { $this->viewBuilder()->layout('blank'); } #Verify Pin Code public function pinCode($token=null) { if(empty($token)) die; $this->viewBuilder()->layout('blank'); $data = $this->request->data(); if(!empty($data)){ $api_core_verify_pin_code = Configure::read('Config.apiCore.verifyPinCode'); $http = new Client(); #$response = json_decode($http->post($api_core_verify_pin_code,$data)->body(),'_full'); $response = $http->post($api_core_verify_pin_code,$data)->body(); $response = json_decode($response,'_full'); if(!empty($response)){ if(trim($response['status']) == 'Success'){ $this->Flash->success(__('Verify Completed.')); return $this->redirect(['controller' => 'Users', 'action' => 'signin']); }else{ $this->Flash->error(__('Pin Code Invalid')); return $this->redirect(['controller' => 'Users', 'action' => 'pinCode/'.$token]); } } } $this->set(array('token' => $token, '_serialize' => array('token'))); } #--------------------------------------------------------------------------------------------------- #Forgot Password public function forgotPassword() { $this->viewBuilder()->layout('blank'); $data = $this->request->data(); #$data['data']['ip'] = $this->request->clientIp(); if(!empty($data)){ if(!empty($data['data']['username'])){ $data['data']['ip'] = $this->request->clientIp();#prr($data); $api_core_forgotPassword = Configure::read('Config.apiCore.forgotPassword'); $http = new Client(); $response = $http->post($api_core_forgotPassword,$data['data'])->body(); $response = json_decode($response,'_full');#debug($response); if(!empty($response)){ if(trim($response['status']) == 'Success'){ $this->Flash->success(__('Completed.')); return $this->redirect(['controller' => 'Users', 'action' => 'signin']); }else{ $this->Flash->error(__('Forgot Password Fail')); return $this->redirect(['controller' => 'Users', 'action' => 'forgotPassword']); } }else{ $this->Flash->error(__('Forgot Password Fail')); return $this->redirect(['controller' => 'Users', 'action' => 'forgotPassword']); } }else{ $this->Flash->error(__('Data Empty')); return $this->redirect(['controller' => 'Users', 'action' => 'forgotPassword']); } } } #--------------------------------------------------------------------------------------------------- #Change Password public function changePassword() { $this->viewBuilder()->layout('blank'); $data = $this->request->data();#debug($data);exit(); if(!empty($data)){ if($this->validateAccount($data)){ $data['data']['ip'] = $this->request->clientIp();#debug($data);exit(); $api_core_change_password = Configure::read('Config.apiCore.changePassword');#debug($api_core_change_password);exit(); $http = new Client(); #$response = json_decode($http->post($api_core_change_password,$data)->body(),'_full'); $response = $http->post($api_core_change_password,$data)->body(); #debug($response);exit(); $response = json_decode($response,'_full'); #debug($response);exit(); if(!empty($response)){ #if(trim($response['status']) == 'Success' && !empty($response['result']['type'])){ if(trim($response['status']) == 'Success'){ #$this->response->withHeader('Authorization', 'Bearer '.$response['result']['token']); #$url = $this->Url->build(['controller' => 'Homes', 'action' => 'index'], true); $url = Router::url(['controller' => 'Users', 'action' => 'signup'], true); #echo "<script>Login.onLogin('".$response['result']['token']."','".$url."');</script>";die; $this->Flash->success(__('change Password completed.')); return $this->redirect(['controller' => 'Users', 'action' => 'signin']); }else{ $this->Flash->error(__('change Password Fail')); return $this->redirect(['controller' => 'Users', 'action' => 'signup']); } } }else{ $this->Flash->error(__('Data Empty')); return $this->redirect(['controller' => 'Users', 'action' => 'signin']); } } } #--------------------------------------------------------------------------------------------------- public function signout() { $this->checkToken(); } }