From 369a2d55dd9ca2436d39c14668fa5fb2570e22ee Mon Sep 17 00:00:00 2001 From: Markin Igor <markin.io210@gmail.com> Date: Wed, 12 Dec 2018 18:25:36 +0300 Subject: [PATCH] Set up device hash creation. --- javascript/src/iframe/viamapi-iframe.js | 28 +++++++++++++++++-------- javascript/src/utilities/appUtility.js | 12 +++++++++++ 2 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 javascript/src/utilities/appUtility.js diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js index 3ff74d1..9ea1e72 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 0000000..00beb25 --- /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 + } +}; -- GitLab