diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js index 3ff74d1b94b7888ab59c358b9eef5cc80555157c..9ea1e720e9791d99c492a445f6db10cdcb2fa027 100644 --- a/javascript/src/iframe/viamapi-iframe.js +++ b/javascript/src/iframe/viamapi-iframe.js @@ -1,3 +1,5 @@ +import {createDeviceHash} from '../utilities/appUtility'; + const libmime = require('libmime'); const QRCode = require('qrcode'); const pkijs = require('pkijs'); @@ -1344,16 +1346,24 @@ window.currentlyAuthenticatedIdentity = null; window.currentlyLoadedIdentity = null; window.lastTimeGetProfile = 0; -const handleIdentityLogin = (identity, uuid, token) => { - const { loadedIdentities, viamApi } = window; +const handleIdentityLogin = async (identity, uuid, token) => { + try { + const { loadedIdentities, viamApi } = window; + const { publicKey } = identity.authentication; + + const deviceHash = await createDeviceHash(publicKey); + + viamApi.setSessionData(uuid, token); + localStorage.setItem("uuid", uuid); + localStorage.setItem("token", token); + localStorage.setItem("authenticatedIdentity", publicKey); + window.currentlyAuthenticatedIdentity = loadedIdentities[publicKey]; + window.lastTimeGetProfile = 0; + setKeyForUUID(uuid, publicKey); + } catch (error) { + console.warn(error); + } - viamApi.setSessionData(uuid, token); - localStorage.setItem("uuid", uuid); - localStorage.setItem("token", token); - localStorage.setItem("authenticatedIdentity", identity.authentication.publicKey); - window.currentlyAuthenticatedIdentity = loadedIdentities[identity.authentication.publicKey]; - window.lastTimeGetProfile = 0; - setKeyForUUID(uuid, identity.authentication.publicKey); }; function executeRestfulFunction(type, that, fn, ...args) { diff --git a/javascript/src/utilities/appUtility.js b/javascript/src/utilities/appUtility.js new file mode 100644 index 0000000000000000000000000000000000000000..00beb2568a03ec3070308acb63d2aee14e262c42 --- /dev/null +++ b/javascript/src/utilities/appUtility.js @@ -0,0 +1,12 @@ +import { getCrypto } from 'pkijs'; + +export const createDeviceHash = async (publicKey) => { + try { + const stringToEncode = publicKey + navigator.userAgent; + const crypto = getCrypto(); + const buffer = new window.TextEncoder("utf-8").encode(stringToEncode); + return window.btoa(await crypto.digest({ name: "SHA-1" }, buffer)); + } catch (error) { + console.warn(error); // eslint-disable-line no-console + } +};