Commit fd5942f9 authored by Anoop HM's avatar Anoop HM Committed by harishkumar gangula
Browse files

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
parent 985c0fd8
master Dark_theme SB-25589 SB-28090 aws_fileRead contributions dependabot/npm_and_yarn/src/app/client/decode-uri-component-0.2.2 dependabot/npm_and_yarn/src/app/decode-uri-component-0.2.2 dependabot/npm_and_yarn/src/app/express-4.17.3 dependabot/npm_and_yarn/src/app/jsonwebtoken-9.0.0 dependabot/npm_and_yarn/src/desktop/OpenRAP/decode-uri-component-0.2.2 dependabot/npm_and_yarn/src/desktop/OpenRAP/express-4.17.3 dependabot/npm_and_yarn/src/desktop/OpenRAP/jsonwebtoken-9.0.0 dependabot/npm_and_yarn/src/desktop/OpenRAP/qs-6.5.3 dependabot/npm_and_yarn/src/desktop/decode-uri-component-0.2.2 dependabot/npm_and_yarn/src/desktop/express-4.17.3 dependabot/npm_and_yarn/src/desktop/jsonwebtoken-9.0.0 dependabot/npm_and_yarn/src/desktop/qs-6.10.3 desktop-common-consumption filters_5.1.1 gcp gcp_test keshavprasadms-patch-1 keshavprasadms-patch-2 release-1.14-SP-2 release-1.14-sp3 release-1.14.6 release-1.15 release-1.15.1 release-2.0.0 release-2.0.0-hotfix release-2.0.1 release-2.0.2 release-2.0.3 release-2.1.0 release-2.1.1 release-2.10.0 release-2.10.1 release-2.10.2 release-2.10.3 release-2.2.0 release-2.2.1 release-2.3.0 release-2.3.1 release-2.3.5 release-2.3.6 release-2.4.0 release-2.4.1 release-2.4.2 release-2.5.0 release-2.5.1 release-2.6.0 release-2.6.0-loadtest release-2.6.5 release-2.6.6 release-2.7.0 release-2.8.0 release-2.8.1 release-2.8.10 release-2.8.11 release-2.8.12 release-2.8.2 release-2.8.3 release-2.8.4 release-2.8.5 release-2.8.6 release-2.8.7 release-2.8.8 release-2.8.9 release-2.9.0 release-3.0 release-3.0-merge release-3.0.0 release-3.0.1 release-3.0.2 release-3.0.3 release-3.0.4 release-3.0.4-sso release-3.1.0 release-3.1.1 release-3.1.2 release-3.2.0 release-3.2.1 release-3.2.10 release-3.2.11 release-3.2.12 release-3.2.13 release-3.2.14 release-3.2.2 release-3.2.3 release-3.2.4 release-3.3.0 release-3.3.0-telemetry-fix release-3.3.1 release-3.3.2 release-3.4.0 release-3.4.1 release-3.4.2 release-3.4.3 release-3.4.4 release-3.4.5 release-3.4.6 release-3.4.7 release-3.5.0 release-3.5.1 release-3.5.2 release-3.5.3 release-3.6.0 release-3.6.1 release-3.6.5 release-3.6.6 release-3.7.0 release-3.7.1 release-3.7.2 release-3.8.0 release-3.8.1 release-3.8.2 release-3.8.3 release-3.9.0 release-3.9.1 release-3.9.2 release-3.9.3 release-4.0.0 release-4.0.1 release-4.0.2 release-4.1 release-4.1.0 release-4.1.1 release-4.10.0 release-4.10.0.1 release-4.10.1 release-4.10.2 release-4.10.2.1 release-4.10.2.2 release-4.10.3 release-4.2.0 release-4.2.1 release-4.3.0 release-4.3.1 release-4.4.0 release-4.4.1 release-4.5.0 release-4.5.1 release-4.5.2 release-4.6.0 release-4.7.0 release-4.7.1 release-4.8.0 release-4.8.5 release-4.9.0 release-4.9.1 release-5.0.0 release-5.0.0.1 release-5.0.0.2 release-5.0.0.3 release-5.0.1 release-5.0.2 release-5.1.0 release-5.1.1 release-sonarcloud revert-3718-copypi revert-3842-release-2.8.7 revert-3890-release-2.8.9 revert-4427-player-cache-issue revert-4537-SB-19763 revert-5244-sh-809 revert-5260-SB-table-3.3.0 revert-8284-release-5.0.0 sharathkashyap-patch-1 Tags unavailable
No related merge requests found
Showing with 594 additions and 30 deletions
+594 -30
This diff is collapsed.
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
"@angular/platform-browser": "^6.0.7", "@angular/platform-browser": "^6.0.7",
"@angular/platform-browser-dynamic": "^6.0.7", "@angular/platform-browser-dynamic": "^6.0.7",
"@angular/router": "^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", "@project-sunbird/web-extensions": "^0.0.2",
"@types/lodash": "^4.14.104", "@types/lodash": "^4.14.104",
"@types/moment-duration-format": "^2.2.0", "@types/moment-duration-format": "^2.2.0",
...@@ -69,6 +69,7 @@ ...@@ -69,6 +69,7 @@
"slick-carousel": "1.6.0", "slick-carousel": "1.6.0",
"time-ago-pipe": "^1.3.2", "time-ago-pipe": "^1.3.2",
"tree-model": "^1.0.6", "tree-model": "^1.0.6",
"ua-parser-js": "^0.7.19",
"zone.js": "^0.8.19" "zone.js": "^0.8.19"
}, },
"devDependencies": { "devDependencies": {
...@@ -100,4 +101,4 @@ ...@@ -100,4 +101,4 @@
"typescript": "~2.7.2", "typescript": "~2.7.2",
"@angular-devkit/build-angular": "~0.6.8" "@angular-devkit/build-angular": "~0.6.8"
} }
} }
\ No newline at end of file
...@@ -11,7 +11,6 @@ import { Observable, of, throwError, combineLatest } from 'rxjs'; ...@@ -11,7 +11,6 @@ import { Observable, of, throwError, combineLatest } from 'rxjs';
import { first, filter, mergeMap, tap, map } from 'rxjs/operators'; import { first, filter, mergeMap, tap, map } from 'rxjs/operators';
import { CacheService } from 'ng2-cache-service'; import { CacheService } from 'ng2-cache-service';
import { DOCUMENT } from '@angular/platform-browser'; import { DOCUMENT } from '@angular/platform-browser';
const fingerPrint2 = new Fingerprint2();
/** /**
* main app component * main app component
...@@ -146,7 +145,8 @@ export class AppComponent implements OnInit { ...@@ -146,7 +145,8 @@ export class AppComponent implements OnInit {
* fetch device id using fingerPrint2 library. * fetch device id using fingerPrint2 library.
*/ */
public setDeviceId(): Observable<string> { 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; (<HTMLInputElement>document.getElementById('deviceId')).value = deviceId;
observer.next(deviceId); observer.next(deviceId);
observer.complete(); observer.complete();
......
...@@ -9,6 +9,8 @@ import * as _ from 'lodash'; ...@@ -9,6 +9,8 @@ import * as _ from 'lodash';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { PublicDataService } from './../public-data/public-data.service'; import { PublicDataService } from './../public-data/public-data.service';
import { skipWhile } from 'rxjs/operators'; import { skipWhile } from 'rxjs/operators';
import * as UAParser from 'ua-parser-js';
/** /**
* Service to fetch user details from server * Service to fetch user details from server
* *
...@@ -335,8 +337,8 @@ export class UserService { ...@@ -335,8 +337,8 @@ export class UserService {
* method to log session start * method to log session start
*/ */
public startSession(): void { public startSession(): void {
const fingerPrint2 = new Fingerprint2(); const options = this.getFingerPrintOptions();
fingerPrint2.get((result, components) => { Fingerprint2.getV18(options, (result) => {
const url = `/v1/user/session/start/${result}`; const url = `/v1/user/session/start/${result}`;
this.http.get(url).subscribe(); this.http.get(url).subscribe();
}); });
...@@ -345,4 +347,56 @@ export class UserService { ...@@ -345,4 +347,56 @@ export class UserService {
getUserByKey(key) { getUserByKey(key) {
return this.learnerService.get({ url: this.config.urlConFig.URLS.USER.GET_USER_BY_KEY + '/' + 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'
});
}
} }
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment