Add errror handling on device that use MyKad scanner without driver/services

- Provide download link of the driver in the handling modal
This commit is contained in:
afiq.hamzah
2023-03-08 16:17:08 +08:00
parent def687b3a0
commit 454bf9a931
6 changed files with 223 additions and 176 deletions
+4 -4
View File
@@ -31,10 +31,10 @@ class NoHttpCache
/** /**
* @var $headers \Symfony\Component\HttpFoundation\HeaderBag * @var $headers \Symfony\Component\HttpFoundation\HeaderBag
*/ */
$response->header('Pragma', 'no-cache'); $response->headers->set('Pragma', 'no-cache');
$response->header('Expires', 'Fri, 01 Jan 1990 00:00:00 GMT'); $response->headers->set('Expires', 'Fri, 01 Jan 1990 00:00:00 GMT');
$response->header('Cache-Control', 'no-cache, must-revalidate, no-store, max-age=0, private'); $response->headers->set('Cache-Control', 'no-cache, must-revalidate, no-store, max-age=0, private');
return $response; return $response;
} }
} }
+5
View File
@@ -48,6 +48,11 @@ return [
'root' => storage_path('app'), 'root' => storage_path('app'),
], ],
'supports' => [
'driver' => 'local',
'root' => storage_path('drivers'),
],
'public' => [ 'public' => [
'driver' => 'local', 'driver' => 'local',
'root' => storage_path('app/public'), 'root' => storage_path('app/public'),
+208 -172
View File
@@ -1,258 +1,294 @@
WebSocketManager = { WebSocketManager = {
url:"", url:"",
init: function(url) { init: function(url) {
WebSocketManager.url = url; WebSocketManager.url = url;
}, },
open: function(callback, slot) { open: function(callback, slot) {
wsocket = new WebSocket(WebSocketManager.url); wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () { wsocket.onopen = function () {
wsocket.send('{"Cmd":"OPEN","Slot":"'+ slot +'"}'); wsocket.send('{"Cmd":"OPEN","Slot":"'+ slot +'"}');
}; };
wsocket.onmessage = function (evt) { wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data); var obj = JSON.parse(evt.data);
wsocket.close(); wsocket.close();
callback(obj); callback(obj);
}; };
}, },
listReader: function(callback) { listReader: function(callback) {
wsocket = new WebSocket(WebSocketManager.url); wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () { wsocket.onopen = function () {
wsocket.send('{"Cmd":"LIST_READER"}'); wsocket.send('{"Cmd":"LIST_READER"}');
}; };
wsocket.onmessage = function (evt) { wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data); var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage); var data = JSON.parse(obj.RespMessage);
wsocket.close(); wsocket.close();
callback(data, obj.RespCode); callback(data, obj.RespCode);
}; };
}, wsocket.onerror = evt => {
let hideLoader = () => {
let pageLoader = document.getElementById('page_loader');
pageLoader.removeAttribute('class');
};
hideLoader();
wsocket.close();
Swal.fire({
icon: 'error',
title: 'MyKad driver/services not found, please install driver',
html: `
<div class="mt-2">
<button type="button" class="btn-download-driver btn btn-outline-secondary btn-lg mb-2">
Download driver <i class="fa fa-download"></i>
</button><br>
<button type="button" class="btn-yes swal2-confirm swal2-styled">OK</button><br>
</div>
`,
showCancelButton: false,
showConfirmButton: false,
willOpen: () => {
const yes = document.querySelector('button.btn-yes')
const download_driver = document.querySelector('button.btn-download-driver')
yes.addEventListener('click', () => {
swal.close();
})
download_driver.addEventListener('click', () => {
window.location.href = mykad_reader_driver_endpoint;
})
}
});
};
},
close: function(callback) { close: function(callback) {
wsocket = new WebSocket(WebSocketManager.url); wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () { wsocket.onopen = function () {
wsocket.send('{"Cmd":"CLOSE"}'); wsocket.send('{"Cmd":"CLOSE"}');
}; };
wsocket.onmessage = function (evt) { wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data); var obj = JSON.parse(evt.data);
wsocket.close(); wsocket.close();
callback(obj); callback(obj);
}; };
}, },
verifyFPTemplate: function(callback, ThumbCode, Bas64FPLeft, Bas64FPRight) { verifyFPTemplate: function(callback, ThumbCode, Bas64FPLeft, Bas64FPRight) {
wsocket = new WebSocket(WebSocketManager.url); wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () { wsocket.onopen = function () {
wsocket.send('{"Cmd":"VERIFY_FP_TEMPLATE","ThumbCode":"'+ ThumbCode +'","Bas64FPLeft":"'+ Bas64FPLeft +'","Bas64FPRight":"'+ Bas64FPRight +'"}'); wsocket.send('{"Cmd":"VERIFY_FP_TEMPLATE","ThumbCode":"'+ ThumbCode +'","Bas64FPLeft":"'+ Bas64FPLeft +'","Bas64FPRight":"'+ Bas64FPRight +'"}');
}; };
wsocket.onmessage = function (evt) { wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data); var obj = JSON.parse(evt.data);
wsocket.close(); wsocket.close();
callback(obj.RespCode, obj.RespMessage); callback(obj.RespCode, obj.RespMessage);
}; };
}, },
readMyKad: function (callback) { readMyKad: function (callback) {
wsocket = new WebSocket(WebSocketManager.url); wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () { wsocket.onopen = function () {
wsocket.send('{"Cmd":"READ_MYKAD"}'); wsocket.send('{"Cmd":"READ_MYKAD"}');
}; };
wsocket.onmessage = function (evt) { wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data); var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage);
wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName);
};
},
readAllText: function (callback) {
wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () {
wsocket.send('{"Cmd":"READ_ALL_TEXT"}');
};
wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage);
wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName);
};
},
readPhoto: function (callback) {
wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () {
wsocket.send('{"Cmd":"READ_PHOTO"}');
};
wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage);
wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName);
};
},
readBio: function (callback) {
wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () {
wsocket.send('{"Cmd":"READ_BIO"}');
};
wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage);
wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName);
};
},
readMyKid: function (callback) {
wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () {
wsocket.send('{"Cmd":"READ_MYKID"}');
};
wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage);
wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName);
};
},
FPBioEnrol: function (callback) {
wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () {
wsocket.send('{"Cmd":"FP_BIO_ENROL"}');
};
wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data);
//var data = JSON.parse(obj.RespMessage);
wsocket.close();
callback(obj);
};
},
getThumbImage: function (callback) {
wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () {
wsocket.send('{"Cmd":"GET_MYKAD_THUMB_IMAGE"}');
};
wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage); var data = JSON.parse(obj.RespMessage);
wsocket.close(); wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName); callback(data, obj.RespCode, obj.RespSW12AndApiName);
}; };
}, },
getThumbBin1: function (callback) { readAllText: function (callback) {
wsocket = new WebSocket(WebSocketManager.url); wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () { wsocket.onopen = function () {
wsocket.send('{"Cmd":"GET_THUMB_BIN1"}'); wsocket.send('{"Cmd":"READ_ALL_TEXT"}');
}; };
wsocket.onmessage = function (evt) { wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data); var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage); var data = JSON.parse(obj.RespMessage);
wsocket.close(); wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName); callback(data, obj.RespCode, obj.RespSW12AndApiName);
}; };
}, },
getThumbBin2: function (callback) { readPhoto: function (callback) {
wsocket = new WebSocket(WebSocketManager.url); wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () { wsocket.onopen = function () {
wsocket.send('{"Cmd":"GET_THUMB_BIN2"}'); wsocket.send('{"Cmd":"READ_PHOTO"}');
}; };
wsocket.onmessage = function (evt) { wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data); var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage); var data = JSON.parse(obj.RespMessage);
wsocket.close(); wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName); callback(data, obj.RespCode, obj.RespSW12AndApiName);
}; };
}, },
FPBioEnrolBin1: function (callback) { readBio: function (callback) {
wsocket = new WebSocket(WebSocketManager.url); wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () { wsocket.onopen = function () {
wsocket.send('{"Cmd":"FP_BIO_ENROL_BIN1"}'); wsocket.send('{"Cmd":"READ_BIO"}');
}; };
wsocket.onmessage = function (evt) { wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data); var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage);
wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName);
};
},
readMyKid: function (callback) {
wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () {
wsocket.send('{"Cmd":"READ_MYKID"}');
};
wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage);
wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName);
};
},
FPBioEnrol: function (callback) {
wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () {
wsocket.send('{"Cmd":"FP_BIO_ENROL"}');
};
wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data);
//var data = JSON.parse(obj.RespMessage); //var data = JSON.parse(obj.RespMessage);
wsocket.close(); wsocket.close();
callback(obj); callback(obj);
}; };
}, },
FPBioEnrolBin2: function (callback) { getThumbImage: function (callback) {
wsocket = new WebSocket(WebSocketManager.url); wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () { wsocket.onopen = function () {
wsocket.send('{"Cmd":"FP_BIO_ENROL_BIN2"}'); wsocket.send('{"Cmd":"GET_MYKAD_THUMB_IMAGE"}');
}; };
wsocket.onmessage = function (evt) { wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data); var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage);
wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName);
};
},
getThumbBin1: function (callback) {
wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () {
wsocket.send('{"Cmd":"GET_THUMB_BIN1"}');
};
wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage);
wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName);
};
},
getThumbBin2: function (callback) {
wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () {
wsocket.send('{"Cmd":"GET_THUMB_BIN2"}');
};
wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage);
wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName);
};
},
FPBioEnrolBin1: function (callback) {
wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () {
wsocket.send('{"Cmd":"FP_BIO_ENROL_BIN1"}');
};
wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data);
//var data = JSON.parse(obj.RespMessage); //var data = JSON.parse(obj.RespMessage);
wsocket.close(); wsocket.close();
callback(obj); callback(obj);
}; };
}, },
FPBioVerify: function (callback) { FPBioEnrolBin2: function (callback) {
wsocket = new WebSocket(WebSocketManager.url); wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () { wsocket.onopen = function () {
wsocket.send('{"Cmd":"FP_BIO_VERIFY"}'); wsocket.send('{"Cmd":"FP_BIO_ENROL_BIN2"}');
}; };
wsocket.onmessage = function (evt) { wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data); var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage); //var data = JSON.parse(obj.RespMessage);
wsocket.close(); wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName); callback(obj);
}; };
}, },
FPBioVerifyBin: function (callback) { FPBioVerify: function (callback) {
wsocket = new WebSocket(WebSocketManager.url); wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () { wsocket.onopen = function () {
wsocket.send('{"Cmd":"FP_BIO_VERIFY_BIN"}'); wsocket.send('{"Cmd":"FP_BIO_VERIFY"}');
}; };
wsocket.onmessage = function (evt) { wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data); var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage); var data = JSON.parse(obj.RespMessage);
wsocket.close(); wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName); callback(data, obj.RespCode, obj.RespSW12AndApiName);
}; };
}, },
FPBioVerifyLeft: function (callback) { FPBioVerifyBin: function (callback) {
wsocket = new WebSocket(WebSocketManager.url); wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () { wsocket.onopen = function () {
wsocket.send('{"Cmd":"FP_BIO_VERIFY_LEFT"}'); wsocket.send('{"Cmd":"FP_BIO_VERIFY_BIN"}');
}; };
wsocket.onmessage = function (evt) { wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data); var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage); var data = JSON.parse(obj.RespMessage);
wsocket.close(); wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName); callback(data, obj.RespCode, obj.RespSW12AndApiName);
}; };
}, },
FPBioVerifyBinLeft: function (callback) { FPBioVerifyLeft: function (callback) {
wsocket = new WebSocket(WebSocketManager.url); wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () { wsocket.onopen = function () {
wsocket.send('{"Cmd":"FP_BIO_VERIFY_BIN_LEFT"}'); wsocket.send('{"Cmd":"FP_BIO_VERIFY_LEFT"}');
}; };
wsocket.onmessage = function (evt) { wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data); var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage); var data = JSON.parse(obj.RespMessage);
wsocket.close(); wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName); callback(data, obj.RespCode, obj.RespSW12AndApiName);
}; };
}, },
FPBioVerifyRight: function (callback) { FPBioVerifyBinLeft: function (callback) {
wsocket = new WebSocket(WebSocketManager.url); wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () { wsocket.onopen = function () {
wsocket.send('{"Cmd":"FP_BIO_VERIFY_RIGHT"}'); wsocket.send('{"Cmd":"FP_BIO_VERIFY_BIN_LEFT"}');
}; };
wsocket.onmessage = function (evt) { wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data); var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage); var data = JSON.parse(obj.RespMessage);
wsocket.close(); wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName); callback(data, obj.RespCode, obj.RespSW12AndApiName);
}; };
}, },
FPBioVerifyBinRight: function (callback) { FPBioVerifyRight: function (callback) {
wsocket = new WebSocket(WebSocketManager.url); wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () { wsocket.onopen = function () {
wsocket.send('{"Cmd":"FP_BIO_VERIFY_BIN_RIGHT"}'); wsocket.send('{"Cmd":"FP_BIO_VERIFY_RIGHT"}');
}; };
wsocket.onmessage = function (evt) { wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data); var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage); var data = JSON.parse(obj.RespMessage);
wsocket.close(); wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName); callback(data, obj.RespCode, obj.RespSW12AndApiName);
}; };
} },
FPBioVerifyBinRight: function (callback) {
wsocket = new WebSocket(WebSocketManager.url);
wsocket.onopen = function () {
wsocket.send('{"Cmd":"FP_BIO_VERIFY_BIN_RIGHT"}');
};
wsocket.onmessage = function (evt) {
var obj = JSON.parse(evt.data);
var data = JSON.parse(obj.RespMessage);
wsocket.close();
callback(data, obj.RespCode, obj.RespSW12AndApiName);
};
}
} }
@@ -1206,6 +1206,7 @@
// mycard-read endpoint initialization // mycard-read endpoint initialization
let mykad_reader_endpoint = "{{ config('mykad-reader.endpoint') }}"; let mykad_reader_endpoint = "{{ config('mykad-reader.endpoint') }}";
let wakil_caricustomer_endpoint = "{{ route('wakil.caricustomer') }}"; let wakil_caricustomer_endpoint = "{{ route('wakil.caricustomer') }}";
let mykad_reader_driver_endpoint = "{{ route('mykadreader.driver.download') }}";
</script> </script>
<script src="{{ asset('js/iris-mykad-websocket-client-api.js') }}"></script> <script src="{{ asset('js/iris-mykad-websocket-client-api.js') }}"></script>
<script src="{{ asset('js/mykad-reader-customer.js') }}"></script> <script src="{{ asset('js/mykad-reader-customer.js') }}"></script>
+5
View File
@@ -2,6 +2,7 @@
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use App\Services\ImbangdugaServices; use App\Services\ImbangdugaServices;
use Illuminate\Support\Facades\Storage;
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Web Routes | Web Routes
@@ -375,3 +376,7 @@ Route::get('admin/searchpelanggan',['as'=>'admin.searchpelanggan','uses'=>'Khaza
Route::get('admin/poskod',['as'=>'admin.poskod','uses'=>'HomeController@poskod']); Route::get('admin/poskod',['as'=>'admin.poskod','uses'=>'HomeController@poskod']);
Route::get('pembeliannotifykomuditi',['as'=>'beli.notifyKomoditi','uses'=>'OperasiController@notifyKomoditi'])->middleware('auth','operasi'); Route::get('pembeliannotifykomuditi',['as'=>'beli.notifyKomoditi','uses'=>'OperasiController@notifyKomoditi'])->middleware('auth','operasi');
Route::get('supports/driver/mykad-reader',['as'=>'mykadreader.driver.download', function(){
return Storage::disk('supports')->download('MykadReaderDriver.zip');
}])->middleware('auth','teller');
Binary file not shown.