UNPKG

tethysfaceid

Version:

131 lines (106 loc) 4.33 kB
import { Config } from "common/Config"; import { FaceTecSDK } from "core-sdk/FaceTecSDK.js/FaceTecSDK"; import { LivenessCheckProcessor } from "./processors/LivenessCheckProcessor"; import { FaceMapAppUtillities } from "./utilities/faceMapAppUtilities"; import { message } from 'antd'; import { ThemeHelpers } from "./utilities/themeHelpers"; export var Liveness = (function () { var latestEnrollmentIdentifier = ""; var latestSessionResult = null; var latestIDScanResult = null; var latestProcessor; // Wait for onload to be complete before attempting to access the Browser SDK. window.onload = function () { // Set a the directory path for other FaceTec Browser SDK Resources. FaceTecSDK.setResourceDirectory("/resources"); // Set the directory path for required FaceTec Browser SDK images. FaceTecSDK.setImagesDirectory("/FaceTec_images"); // Initialize FaceTec Browser SDK and configure the UI features. FaceTecSDK.initializeInDevelopmentMode(Config.DeviceKeyIdentifier, Config.PublicFaceMapEncryptionKey, function (initializedSuccessfully) { if (initializedSuccessfully) { ThemeHelpers(); FaceMapAppUtillities.enableAllButtons(); } FaceMapAppUtillities.displayStatus(FaceTecSDK.getFriendlyDescriptionForFaceTecSDKStatus(FaceTecSDK.getStatus()), message.success); }); FaceMapAppUtillities.formatUIForDevice(); } // Initiate a 3D Liveness Check. function onLivenessCheckPressed(data, onContinue) { FaceMapAppUtillities.fadeOutMainUIAndPrepareForSession(); // Get a Session Token from the FaceTec SDK, then start the 3D Liveness Check. getSessionToken(function (sessionToken) { latestProcessor = new LivenessCheckProcessor(sessionToken, Liveness, data, onContinue); }) } // Show the final result and transition back into the main interface. function onComplete() { FaceMapAppUtillities.showMainUI(); if (!latestProcessor.isSuccess()) { // Reset the enrollment identifier. latestEnrollmentIdentifier = ""; // Show early exit message to screen. If this occurs, please check logs. // FaceMapAppUtillities.displayStatus("Complete your face scan first!"); return; } // Show successful message to screen // FaceMapAppUtillities.displayStatus("Success", message.success); } // Get the Session Token from the server function getSessionToken(sessionTokenCallback) { var XHR = new XMLHttpRequest(); XHR.open("GET", Config.BaseURL + "/session-token"); XHR.setRequestHeader("X-Device-Key", Config.DeviceKeyIdentifier); XHR.setRequestHeader("X-User-Agent", FaceTecSDK.createFaceTecAPIUserAgentString("")); XHR.onreadystatechange = function () { if (this.readyState === XMLHttpRequest.DONE) { var sessionToken = ""; try { // Attempt to get the sessionToken from the response object. sessionToken = JSON.parse(this.responseText).sessionToken; // Something went wrong in parsing the response. Return an error. if (typeof sessionToken !== "string") { onServerSessionTokenError(); return; } } catch { // Something went wrong in parsing the response. Return an error. onServerSessionTokenError(); return; } sessionTokenCallback(sessionToken); } }; XHR.onerror = function () { onServerSessionTokenError(); } XHR.send(); } function onServerSessionTokenError() { FaceMapAppUtillities.handleErrorGettingServerSessionToken(); } // // DEVELOPER NOTE: This is a convenience function for demonstration purposes only so the Sample App can have access to the latest session results. // In your code, you may not even want or need to do this. // function setLatestSessionResult(sessionResult) { latestSessionResult = sessionResult; } function setIDScanResult(idScanResult) { latestIDScanResult = idScanResult; } function getLatestEnrollmentIdentifier() { return latestEnrollmentIdentifier } function setLatestServerResult(responseJSON) { } return { onLivenessCheckPressed, onComplete, setLatestSessionResult, setIDScanResult, getLatestEnrollmentIdentifier, setLatestServerResult } })();