From fd5942f91e6b1b72b13d81f73ec4a1f8c35d7ecb Mon Sep 17 00:00:00 2001 From: Anoop HM <anoophm44@gmail.com> Date: Fri, 8 Feb 2019 11:40:22 +0530 Subject: [PATCH] Issue # SB-10130 fix: constant DeviceId for all browser versions (#1409) * Issue # SB-0000 fix: draft content limit fix * Issue # SB-10130 fix: Device ID changes every time there is a new browser upgrade --- src/app/client/package-lock.json | 557 +++++++++++++++++- src/app/client/package.json | 5 +- src/app/client/src/app/app.component.ts | 4 +- .../core/services/user/user.service.ts | 58 +- 4 files changed, 594 insertions(+), 30 deletions(-) diff --git a/src/app/client/package-lock.json b/src/app/client/package-lock.json index 1bb726fdf7..f93aa3a5bd 100644 --- a/src/app/client/package-lock.json +++ b/src/app/client/package-lock.json @@ -2701,12 +2701,12 @@ } }, "@project-sunbird/telemetry-sdk": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@project-sunbird/telemetry-sdk/-/telemetry-sdk-0.0.8.tgz", - "integrity": "sha512-zqhHg8UwQy1a+GHY7pt7Nrry6VYbT6exTKS5rT7OjU8BhRO7ZBHQVA92KMH2C1xiFyBqXny9EldWkfIew2A9HA==", + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@project-sunbird/telemetry-sdk/-/telemetry-sdk-0.0.12.tgz", + "integrity": "sha512-x4emFHW5y+5ba7oOEpkyt2lOUzRRw0/Hfg+byzenY0xvs8L9hXpb19cVAalLSRzM8ADrFzLOdhDUrCnmRQbomg==", "requires": { "grunt-karma": "0.12.2", - "karma": "3.1.1" + "karma": "3.1.4" }, "dependencies": { "anymatch": { @@ -2716,6 +2716,16 @@ "requires": { "micromatch": "3.1.10", "normalize-path": "2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "1.1.0" + } + } } }, "arr-diff": { @@ -2756,22 +2766,21 @@ } }, "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.0.tgz", + "integrity": "sha512-5t6G2SH8eO6lCvYOoUpaRnF5Qfd//gd7qJAkwRUw9qlGVkiQ13uwQngqbWWaurOsaAm9+kUGbITADxt6H0XFNQ==", "requires": { "anymatch": "2.0.0", "async-each": "1.0.1", "braces": "2.3.2", - "fsevents": "1.2.4", + "fsevents": "1.2.7", "glob-parent": "3.1.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", "is-glob": "4.0.0", - "lodash.debounce": "4.0.8", - "normalize-path": "2.1.1", + "normalize-path": "3.0.0", "path-is-absolute": "1.0.1", - "readdirp": "2.1.0", + "readdirp": "2.2.1", "upath": "1.1.0" } }, @@ -2816,7 +2825,7 @@ }, "engine.io-client": { "version": "3.2.1", - "resolved": "http://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", "requires": { "component-emitter": "1.2.1", @@ -2998,6 +3007,468 @@ "unpipe": "1.0.0" } }, + "fsevents": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "optional": true, + "requires": { + "nan": "2.10.0", + "node-pre-gyp": "0.10.3" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "2.3.5" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.3" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "requires": { + "safe-buffer": "5.1.2", + "yallist": "3.0.3" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "minipass": "2.3.5" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.2.4", + "bundled": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "iconv-lite": "0.4.24", + "sax": "1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.3", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "1.0.3", + "mkdirp": "0.5.1", + "needle": "2.2.4", + "nopt": "4.0.1", + "npm-packlist": "1.2.0", + "npmlog": "4.1.2", + "rc": "1.2.8", + "rimraf": "2.6.3", + "semver": "5.6.0", + "tar": "4.4.8" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.2.0", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.5" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.5", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "0.6.0", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "optional": true, + "requires": { + "glob": "7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.6.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "optional": true, + "requires": { + "chownr": "1.1.1", + "fs-minipass": "1.2.5", + "minipass": "2.3.5", + "minizlib": "1.2.1", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.2", + "yallist": "3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true + } + } + }, "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", @@ -3085,13 +3556,13 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, "karma": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-3.1.1.tgz", - "integrity": "sha512-NetT3wPCQMNB36uiL9LLyhrOt8SQwrEKt0xD3+KpTCfm0VxVyUJdPL5oTq2Ic5ouemgL/Iz4wqXEbF3zea9kQQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/karma/-/karma-3.1.4.tgz", + "integrity": "sha512-31Vo8Qr5glN+dZEVIpnPCxEGleqE0EY6CtC2X9TagRV3rRQ3SNrvfhddICkJgUK3AgqpeKSZau03QumTGhGoSw==", "requires": { "bluebird": "3.5.1", "body-parser": "1.18.2", - "chokidar": "2.0.4", + "chokidar": "2.1.0", "colors": "1.3.1", "combine-lists": "1.0.1", "connect": "3.6.6", @@ -3099,13 +3570,14 @@ "di": "0.0.1", "dom-serialize": "2.2.1", "expand-braces": "0.1.2", + "flatted": "2.0.0", "glob": "7.1.2", "graceful-fs": "4.1.11", "http-proxy": "1.17.0", "isbinaryfile": "3.0.3", "lodash": "4.17.10", "log4js": "3.0.6", - "mime": "2.3.1", + "mime": "2.4.0", "minimatch": "3.0.4", "optimist": "0.6.1", "qjobs": "1.2.0", @@ -3115,7 +3587,7 @@ "socket.io": "2.1.1", "source-map": "0.6.1", "tmp": "0.0.33", - "useragent": "2.2.1" + "useragent": "2.3.0" } }, "kind-of": { @@ -3166,15 +3638,30 @@ } }, "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", + "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==" }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "4.1.11", + "micromatch": "3.1.10", + "readable-stream": "2.3.6" + } + }, "socket.io": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", @@ -3241,7 +3728,7 @@ }, "socket.io-parser": { "version": "3.2.0", - "resolved": "http://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", "requires": { "component-emitter": "1.2.1", @@ -3273,6 +3760,15 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "requires": { + "lru-cache": "4.1.3", + "tmp": "0.0.33" + } } } }, @@ -7917,6 +8413,11 @@ "resolved": "https://registry.npmjs.org/fine-uploader/-/fine-uploader-5.16.2.tgz", "integrity": "sha1-DYeNoc0nU/gGg6wJHfXa/5/7jEQ=" }, + "flatted": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", + "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==" + }, "flush-write-stream": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", @@ -11446,7 +11947,8 @@ "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true }, "lodash.defaults": { "version": "4.2.0", @@ -16045,6 +16547,11 @@ "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", "dev": true }, + "ua-parser-js": { + "version": "0.7.19", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz", + "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==" + }, "uglify-js": { "version": "3.4.7", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.7.tgz", @@ -16339,6 +16846,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", + "dev": true, "requires": { "lru-cache": "2.2.4", "tmp": "0.0.33" @@ -16347,7 +16855,8 @@ "lru-cache": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", - "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=" + "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", + "dev": true } } }, diff --git a/src/app/client/package.json b/src/app/client/package.json index e865972ecd..3216b8e113 100644 --- a/src/app/client/package.json +++ b/src/app/client/package.json @@ -33,7 +33,7 @@ "@angular/platform-browser": "^6.0.7", "@angular/platform-browser-dynamic": "^6.0.7", "@angular/router": "^6.0.7", - "@project-sunbird/telemetry-sdk": "0.0.8", + "@project-sunbird/telemetry-sdk": "0.0.12", "@project-sunbird/web-extensions": "^0.0.2", "@types/lodash": "^4.14.104", "@types/moment-duration-format": "^2.2.0", @@ -69,6 +69,7 @@ "slick-carousel": "1.6.0", "time-ago-pipe": "^1.3.2", "tree-model": "^1.0.6", + "ua-parser-js": "^0.7.19", "zone.js": "^0.8.19" }, "devDependencies": { @@ -100,4 +101,4 @@ "typescript": "~2.7.2", "@angular-devkit/build-angular": "~0.6.8" } -} \ No newline at end of file +} diff --git a/src/app/client/src/app/app.component.ts b/src/app/client/src/app/app.component.ts index e05dfb50e8..caa43d051b 100644 --- a/src/app/client/src/app/app.component.ts +++ b/src/app/client/src/app/app.component.ts @@ -11,7 +11,6 @@ import { Observable, of, throwError, combineLatest } from 'rxjs'; import { first, filter, mergeMap, tap, map } from 'rxjs/operators'; import { CacheService } from 'ng2-cache-service'; import { DOCUMENT } from '@angular/platform-browser'; -const fingerPrint2 = new Fingerprint2(); /** * main app component @@ -146,7 +145,8 @@ export class AppComponent implements OnInit { * fetch device id using fingerPrint2 library. */ public setDeviceId(): Observable<string> { - return new Observable(observer => fingerPrint2.get((deviceId) => { + const options = this.userService.getFingerPrintOptions(); + return new Observable(observer => Fingerprint2.getV18(options, (deviceId) => { (<HTMLInputElement>document.getElementById('deviceId')).value = deviceId; observer.next(deviceId); observer.complete(); diff --git a/src/app/client/src/app/modules/core/services/user/user.service.ts b/src/app/client/src/app/modules/core/services/user/user.service.ts index 29d3b9047a..e51a1557e4 100644 --- a/src/app/client/src/app/modules/core/services/user/user.service.ts +++ b/src/app/client/src/app/modules/core/services/user/user.service.ts @@ -9,6 +9,8 @@ import * as _ from 'lodash'; import { HttpClient } from '@angular/common/http'; import { PublicDataService } from './../public-data/public-data.service'; import { skipWhile } from 'rxjs/operators'; +import * as UAParser from 'ua-parser-js'; + /** * Service to fetch user details from server * @@ -335,8 +337,8 @@ export class UserService { * method to log session start */ public startSession(): void { - const fingerPrint2 = new Fingerprint2(); - fingerPrint2.get((result, components) => { + const options = this.getFingerPrintOptions(); + Fingerprint2.getV18(options, (result) => { const url = `/v1/user/session/start/${result}`; this.http.get(url).subscribe(); }); @@ -345,4 +347,56 @@ export class UserService { getUserByKey(key) { return this.learnerService.get({ url: this.config.urlConFig.URLS.USER.GET_USER_BY_KEY + '/' + key}); } + public getFingerPrintOptions(): object { + return ({ + preprocessor: (key, value) => { + if (key === 'userAgent') { + const parser = new UAParser(value); // https://github.com/faisalman/ua-parser-js + const userAgentMinusVersion = parser.getOS().name + ' ' + parser.getBrowser().name; + return userAgentMinusVersion; + } + return value; + }, + audio: { + timeout: 1000, + excludeIOS11: true + }, + fonts: { + swfContainerId: 'fingerprintjs2', + swfPath: 'flash/compiled/FontList.swf', + userDefinedFonts: [], + extendedJsFonts: false + }, + screen: { + detectScreenOrientation: true + }, + plugins: { + sortPluginsFor: [/palemoon/i], + excludeIE: false + }, + extraComponents: [], + excludes: { + // Unreliable on Windows, see https://github.com/Valve/fingerprintjs2/issues/375 + 'enumerateDevices': true, + // devicePixelRatio depends on browser zoom, and it's impossible to detect browser zoom + 'pixelRatio': true, + // DNT depends on incognito mode for some browsers (Chrome) and it's impossible to detect incognito mode + 'doNotTrack': true, + // uses js fonts already + 'fontsFlash': true, + 'canvas': true, + 'screenResolution': true, + 'availableScreenResolution': true, + 'touchSupport': true, + 'plugins': true, + 'webgl': true, + 'audio': true, + 'language': true, + 'deviceMemory': true + }, + NOT_AVAILABLE: 'not available', + ERROR: 'error', + EXCLUDED: 'excluded' + }); + } } -- GitLab