From 9b5c84178a60527df6ba2782f83d4d6124b1ba38 Mon Sep 17 00:00:00 2001 From: Mahi Raj <23bsm038@iiitdmj.ac.in> Date: Fri, 20 Mar 2026 10:28:04 +0530 Subject: [PATCH] fix: resolve duplicate login error message --- package-lock.json | 314 ++++++++++-------- package.json | 4 +- .../core/services/http-interceptor.service.ts | 10 +- .../doctor-worklist.component.ts | 4 +- .../shared/services/registrar.service.ts | 11 + src/app/user-login/login/login.component.ts | 149 +++++---- .../user-login/service/service.component.ts | 3 +- tsconfig.json | 8 + 8 files changed, 303 insertions(+), 200 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3924c56f..1d8f2cdf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "@angular/core": "^16.2.0", "@angular/forms": "^16.2.0", "@angular/material": "^16.2.12", - "@angular/material-moment-adapter": "^18.2.3", + "@angular/material-moment-adapter": "^16.2.12", "@angular/platform-browser": "^16.2.0", "@angular/platform-browser-dynamic": "^16.2.0", "@angular/router": "^16.2.0", @@ -34,7 +34,7 @@ "ng-cryptostore": "^16.0.0", "ng2-charts": "^5.0.4", "ng2-completer": "^9.0.1", - "ngx-bootstrap": "^12.0.0", + "ngx-bootstrap": "^11.0.0", "ngx-cookie-service": "^16.1.0", "ngx-pagination": "^6.0.3", "ngx-webcam": "^0.4.1", @@ -539,9 +539,10 @@ } }, "node_modules/@angular/cdk": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-16.2.12.tgz", - "integrity": "sha512-wT8/265zm2WKY0BDaRoYbrAT4kadrmejTRLjuimQIEUKnw4vBsJMWCwQkpFo3s6zr6eznGqYVAFb8KKPVLKGBg==", + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-16.2.14.tgz", + "integrity": "sha512-n6PrGdiVeSTEmM/HEiwIyg6YQUUymZrb5afaNLGFRM5YL0Y8OBqd+XhCjb0OfD/AfgCUtedVEPwNqrfW8KzgGw==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -769,9 +770,10 @@ } }, "node_modules/@angular/material": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-16.2.12.tgz", - "integrity": "sha512-k1DGRfP1mMmhg/nLJjZBOPzX3SyAjgbRBY2KauKOV8OFCXJGoMn/oLgMBh+qB1WugzIna/31dBV8ruHD3Uvp2w==", + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-16.2.14.tgz", + "integrity": "sha512-zQIxUb23elPfiIvddqkIDYqQhAHa9ZwMblfbv+ug8bxr4D0Dw360jIarxCgMjAcLj7Ccl3GBqZMUnVeM6cjthw==", + "license": "MIT", "dependencies": { "@material/animation": "15.0.0-canary.bc9ae6c9c.0", "@material/auto-init": "15.0.0-canary.bc9ae6c9c.0", @@ -824,7 +826,7 @@ }, "peerDependencies": { "@angular/animations": "^16.0.0 || ^17.0.0", - "@angular/cdk": "16.2.12", + "@angular/cdk": "16.2.14", "@angular/common": "^16.0.0 || ^17.0.0", "@angular/core": "^16.0.0 || ^17.0.0", "@angular/forms": "^16.0.0 || ^17.0.0", @@ -833,15 +835,16 @@ } }, "node_modules/@angular/material-moment-adapter": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-18.2.3.tgz", - "integrity": "sha512-PPwnU4FmrJ6rCZxMn0C6fOPPks75NuVSS5zmZGh9uuTWQuwYnL6ihmRYnFOMW64pPPOJPvkmbwf88zj4PLG1Aw==", + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-16.2.14.tgz", + "integrity": "sha512-LagTDXEq8XOVLy8CVswCbmq7v9bb84+VikEEN09tz831U/7PHjDZ3xRgpKtv7hXrh8cTZOg3UPQw5tZk0hwh3Q==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": "^18.0.0 || ^19.0.0", - "@angular/material": "18.2.3", + "@angular/core": "^16.0.0 || ^17.0.0", + "@angular/material": "16.2.14", "moment": "^2.18.1" } }, @@ -2907,13 +2910,6 @@ "node": ">=v18" } }, - "node_modules/@commitlint/load/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, "node_modules/@commitlint/load/node_modules/chalk": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", @@ -2927,46 +2923,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@commitlint/load/node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@commitlint/load/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/@commitlint/message": { "version": "19.8.0", "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.8.0.tgz", @@ -5141,6 +5097,17 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/@schematics/angular": { "version": "16.2.10", "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.10.tgz", @@ -7835,15 +7802,16 @@ } }, "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", "dev": true, + "license": "MIT", "dependencies": { + "env-paths": "^2.2.1", "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" + "parse-json": "^5.2.0" }, "engines": { "node": ">=14" @@ -13519,18 +13487,19 @@ } }, "node_modules/ngx-bootstrap": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/ngx-bootstrap/-/ngx-bootstrap-12.0.0.tgz", - "integrity": "sha512-6/Hs+FT6peMc+Y2uiOm3IawG06Jh3gLQwwKRBF0U1OMlRbpx4KIyHS9GpZtMevtZaBsCRNfHKiSxwsnvn9wx0Q==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/ngx-bootstrap/-/ngx-bootstrap-11.0.2.tgz", + "integrity": "sha512-McvQ72XB6692Jus47jahWWwjpSCa6EtHMIqoyMewKCEHMv0ybDgVnOAdEsWKvwfulowHn7Y/jDjeiURwYJG9cQ==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/animations": "^17.0.0", - "@angular/common": "^17.0.0", - "@angular/core": "^17.0.0", - "@angular/forms": "^17.0.0", - "rxjs": "^6.5.3 || ^7.4.0" + "@angular/animations": "^16.0.0", + "@angular/common": "^16.0.0", + "@angular/core": "^16.0.0", + "@angular/forms": "^16.0.0", + "rxjs": "^6.5.3 || ^7.6.0" } }, "node_modules/ngx-cookie-service": { @@ -14935,6 +14904,53 @@ "webpack": "^5.0.0" } }, + "node_modules/postcss-loader/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/postcss-loader/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/postcss-loader/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/postcss-modules-extract-imports": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", @@ -18767,9 +18783,9 @@ } }, "@angular/cdk": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-16.2.12.tgz", - "integrity": "sha512-wT8/265zm2WKY0BDaRoYbrAT4kadrmejTRLjuimQIEUKnw4vBsJMWCwQkpFo3s6zr6eznGqYVAFb8KKPVLKGBg==", + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-16.2.14.tgz", + "integrity": "sha512-n6PrGdiVeSTEmM/HEiwIyg6YQUUymZrb5afaNLGFRM5YL0Y8OBqd+XhCjb0OfD/AfgCUtedVEPwNqrfW8KzgGw==", "requires": { "parse5": "^7.1.2", "tslib": "^2.3.0" @@ -18923,9 +18939,9 @@ } }, "@angular/material": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-16.2.12.tgz", - "integrity": "sha512-k1DGRfP1mMmhg/nLJjZBOPzX3SyAjgbRBY2KauKOV8OFCXJGoMn/oLgMBh+qB1WugzIna/31dBV8ruHD3Uvp2w==", + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-16.2.14.tgz", + "integrity": "sha512-zQIxUb23elPfiIvddqkIDYqQhAHa9ZwMblfbv+ug8bxr4D0Dw360jIarxCgMjAcLj7Ccl3GBqZMUnVeM6cjthw==", "requires": { "@material/animation": "15.0.0-canary.bc9ae6c9c.0", "@material/auto-init": "15.0.0-canary.bc9ae6c9c.0", @@ -18978,9 +18994,9 @@ } }, "@angular/material-moment-adapter": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-18.2.3.tgz", - "integrity": "sha512-PPwnU4FmrJ6rCZxMn0C6fOPPks75NuVSS5zmZGh9uuTWQuwYnL6ihmRYnFOMW64pPPOJPvkmbwf88zj4PLG1Aw==", + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-16.2.14.tgz", + "integrity": "sha512-LagTDXEq8XOVLy8CVswCbmq7v9bb84+VikEEN09tz831U/7PHjDZ3xRgpKtv7hXrh8cTZOg3UPQw5tZk0hwh3Q==", "requires": { "tslib": "^2.3.0" } @@ -19422,7 +19438,8 @@ "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true + "dev": true, + "requires": {} }, "@babel/plugin-proposal-unicode-property-regex": { "version": "7.18.6", @@ -20422,38 +20439,11 @@ "lodash.uniq": "^4.5.0" }, "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "chalk": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true - }, - "cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dev": true, - "requires": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - } - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } } } }, @@ -21778,7 +21768,8 @@ "version": "16.2.12", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.12.tgz", "integrity": "sha512-f9R9Qsk8v+ffDxryl6PQ7Wnf2JCNd4dDXOH+d/AuF06VFiwcwGDRDZpmqkAXbFxQfcWTbT1FFvfoJ+SFcJgXLA==", - "dev": true + "dev": true, + "requires": {} }, "@nodelib/fs.scandir": { "version": "2.1.5", @@ -22083,6 +22074,12 @@ "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true }, + "@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true + }, "@schematics/angular": { "version": "16.2.10", "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.10.tgz", @@ -22642,7 +22639,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz", "integrity": "sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A==", - "dev": true + "dev": true, + "requires": {} }, "@webassemblyjs/ast": { "version": "1.11.6", @@ -22953,13 +22951,15 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "dev": true + "dev": true, + "requires": {} }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "requires": {} }, "acorn-walk": { "version": "7.2.0", @@ -23388,7 +23388,8 @@ "bootstrap": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==" + "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "requires": {} }, "brace-expansion": { "version": "1.1.11", @@ -24139,15 +24140,15 @@ } }, "cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", "dev": true, "requires": { + "env-paths": "^2.2.1", "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" + "parse-json": "^5.2.0" }, "dependencies": { "argparse": { @@ -24727,7 +24728,8 @@ "version": "8.11.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true + "dev": true, + "requires": {} } } }, @@ -25097,7 +25099,8 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", - "dev": true + "dev": true, + "requires": {} }, "eslint-plugin-prettier": { "version": "5.1.3", @@ -26213,7 +26216,8 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true + "dev": true, + "requires": {} }, "ieee754": { "version": "1.2.1", @@ -27030,7 +27034,8 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz", "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==", - "dev": true + "dev": true, + "requires": {} }, "karma-source-map-support": { "version": "1.4.0", @@ -28324,12 +28329,13 @@ "ng2-completer": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/ng2-completer/-/ng2-completer-9.0.1.tgz", - "integrity": "sha512-zEKehHdCK8E/k4Y0HepprGdYBHr2AOsaq4QpeqoCyUElOOC5M3qi3ZEHV1VF54I7heBQktswwXe5UyWduJ0Xeg==" + "integrity": "sha512-zEKehHdCK8E/k4Y0HepprGdYBHr2AOsaq4QpeqoCyUElOOC5M3qi3ZEHV1VF54I7heBQktswwXe5UyWduJ0Xeg==", + "requires": {} }, "ngx-bootstrap": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/ngx-bootstrap/-/ngx-bootstrap-12.0.0.tgz", - "integrity": "sha512-6/Hs+FT6peMc+Y2uiOm3IawG06Jh3gLQwwKRBF0U1OMlRbpx4KIyHS9GpZtMevtZaBsCRNfHKiSxwsnvn9wx0Q==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/ngx-bootstrap/-/ngx-bootstrap-11.0.2.tgz", + "integrity": "sha512-McvQ72XB6692Jus47jahWWwjpSCa6EtHMIqoyMewKCEHMv0ybDgVnOAdEsWKvwfulowHn7Y/jDjeiURwYJG9cQ==", "requires": { "tslib": "^2.3.0" } @@ -29357,13 +29363,43 @@ "cosmiconfig": "^8.2.0", "jiti": "^1.18.2", "semver": "^7.3.8" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "requires": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + } + }, + "js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + } } }, "postcss-modules-extract-imports": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-modules-local-by-default": { "version": "4.0.3", @@ -30491,7 +30527,8 @@ "version": "8.11.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true + "dev": true, + "requires": {} } } }, @@ -30923,7 +30960,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "json-schema-traverse": { "version": "0.4.1", @@ -31062,7 +31100,8 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", - "dev": true + "dev": true, + "requires": {} }, "tsconfig-paths": { "version": "4.2.0", @@ -31520,7 +31559,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "json-schema-traverse": { "version": "0.4.1", @@ -31609,7 +31649,8 @@ "version": "8.16.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", - "dev": true + "dev": true, + "requires": {} } } }, @@ -31795,7 +31836,8 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true + "dev": true, + "requires": {} }, "xml-name-validator": { "version": "3.0.0", diff --git a/package.json b/package.json index 1b7db1ed..4ba72f7e 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "@angular/core": "^16.2.0", "@angular/forms": "^16.2.0", "@angular/material": "^16.2.12", - "@angular/material-moment-adapter": "^18.2.3", + "@angular/material-moment-adapter": "^16.2.12", "@angular/platform-browser": "^16.2.0", "@angular/platform-browser-dynamic": "^16.2.0", "@angular/router": "^16.2.0", @@ -54,7 +54,7 @@ "ng-cryptostore": "^16.0.0", "ng2-charts": "^5.0.4", "ng2-completer": "^9.0.1", - "ngx-bootstrap": "^12.0.0", + "ngx-bootstrap": "^11.0.0", "ngx-cookie-service": "^16.1.0", "ngx-pagination": "^6.0.3", "ngx-webcam": "^0.4.1", diff --git a/src/app/app-modules/core/services/http-interceptor.service.ts b/src/app/app-modules/core/services/http-interceptor.service.ts index 4fcb5b6d..8386496f 100644 --- a/src/app/app-modules/core/services/http-interceptor.service.ts +++ b/src/app/app-modules/core/services/http-interceptor.service.ts @@ -87,7 +87,9 @@ export class HttpInterceptorService implements HttpInterceptor { catchError((error: HttpErrorResponse) => { console.error(error); this.spinnerService.setLoading(false); - if (error.status === 401) { + if (this.isLoginRequest(req.url)) { + return throwError(() => error.error || error); + } else if (error.status === 401) { this.handleSessionExpiry( this.currentLanguageSet.sessionExpiredPleaseLogin || 'Session has expired, please login again.', @@ -110,11 +112,15 @@ export class HttpInterceptorService implements HttpInterceptor { } sessionStorage.clear(); this.sessionstorage.clear(); - return throwError(error.error); + return throwError(() => error.error || error); }), ); } + private isLoginRequest(url: string): boolean { + return url.indexOf('user/userAuthenticate') >= 0; + } + private onSuccess(url: string, response: any): void { if (this.timerRef) clearTimeout(this.timerRef); diff --git a/src/app/app-modules/nurse-doctor/doctor-worklist/doctor-worklist.component.ts b/src/app/app-modules/nurse-doctor/doctor-worklist/doctor-worklist.component.ts index d9df39dd..4787462f 100644 --- a/src/app/app-modules/nurse-doctor/doctor-worklist/doctor-worklist.component.ts +++ b/src/app/app-modules/nurse-doctor/doctor-worklist/doctor-worklist.component.ts @@ -117,7 +117,9 @@ export class DoctorWorklistComponent implements OnInit, DoCheck, OnDestroy { } redirectToCHOReport() { - window.location.href = `${environment.dhisURL}${JSON.parse(this.sessionstorage.getItem('loginDataResponse'))?.dhistoken}`; + const loginDataResponse = + this.sessionstorage.getItem('loginDataResponse') ?? 'null'; + window.location.href = `${environment.dhisURL}${JSON.parse(loginDataResponse)?.dhistoken}`; } setDisplayedColumns() { diff --git a/src/app/app-modules/registrar/shared/services/registrar.service.ts b/src/app/app-modules/registrar/shared/services/registrar.service.ts index 05cc90b8..95599799 100644 --- a/src/app/app-modules/registrar/shared/services/registrar.service.ts +++ b/src/app/app-modules/registrar/shared/services/registrar.service.ts @@ -294,6 +294,17 @@ export class RegistrarService { getHealthIdDetails(reqObj: any) { return this.http.post(environment.gethealthIdDetailsUrl, reqObj); } + + getMappedFacility(workLocationId: any) { + return this.http.get( + `${environment.getAbdmMappedFacility}${workLocationId}`, + ); + } + + saveAbdmFacilityForVisit(reqObj: any) { + return this.http.post(environment.saveAbdmFacilityIdForVisit, reqObj); + } + generateOtpForMappingCareContext(reqObjForMapping: any) { return this.http.post( environment.careContextGenerateOtpUrl, diff --git a/src/app/user-login/login/login.component.ts b/src/app/user-login/login/login.component.ts index ac026ed0..bbdd9e68 100644 --- a/src/app/user-login/login/login.component.ts +++ b/src/app/user-login/login/login.component.ts @@ -207,80 +207,113 @@ export class LoginComponent implements OnInit { .userLogoutPreviousSession( this.loginForm.controls.userName.value, ) - .subscribe((userlogoutPreviousSession: any) => { - if (userlogoutPreviousSession.statusCode === 200) { - this.authService - .login( - this.loginForm.controls.userName.value, - encryptPassword, - true, - this.enableCaptcha - ? this.captchaToken - : undefined, - ) - .subscribe((userLoggedIn: any) => { - if (userLoggedIn.statusCode === 200) { - if (userLoggedIn?.data?.previlegeObj[0]) { - this.sessionstorage.setItem( - 'loginDataResponse', - JSON.stringify(userLoggedIn.data), - ); - this.trackingService.setUserId( - userLoggedIn.data.userID, - ); - this.authService.sessionExpiredHandled = - false; - this.sessionstorage.setItem( - 'loginDataResponse', - JSON.stringify(userLoggedIn.data), - ); - this.getServicesAuthdetails( - userLoggedIn.data, - ); - } else { - this.resetCaptcha(); - this.confirmationService.alert( - 'Seems you are logged in from somewhere else, Logout from there & try back in.', - 'error', - ); - } - } else { - this.resetCaptcha(); - this.confirmationService.alert( - userLoggedIn.errorMessage, - 'error', - ); - } - }); - } else { - this.resetCaptcha(); - this.confirmationService.alert( - userlogoutPreviousSession.errorMessage, - 'error', - ); - } - }); + .subscribe( + (userlogoutPreviousSession: any) => { + if (userlogoutPreviousSession.statusCode === 200) { + this.authService + .login( + this.loginForm.controls.userName.value, + encryptPassword, + true, + this.enableCaptcha + ? this.captchaToken + : undefined, + ) + .subscribe( + (userLoggedIn: any) => { + if (userLoggedIn.statusCode === 200) { + if (userLoggedIn?.data?.previlegeObj[0]) { + this.sessionstorage.setItem( + 'loginDataResponse', + JSON.stringify(userLoggedIn.data), + ); + this.trackingService.setUserId( + userLoggedIn.data.userID, + ); + this.authService.sessionExpiredHandled = + false; + this.sessionstorage.setItem( + 'loginDataResponse', + JSON.stringify(userLoggedIn.data), + ); + this.getServicesAuthdetails( + userLoggedIn.data, + ); + } else { + this.resetCaptcha(); + this.confirmationService.alert( + 'Seems you are logged in from somewhere else, Logout from there & try back in.', + 'error', + ); + } + } else { + this.resetCaptcha(); + this.showLoginError(userLoggedIn); + } + }, + (error) => { + this.showLoginError(error); + }, + ); + } else { + this.showLoginError(userlogoutPreviousSession); + } + }, + (error) => { + this.showLoginError(error); + }, + ); } else { this.resetCaptcha(); sessionStorage.clear(); this.router.navigate(['/login']); - this.confirmationService.alert(res.errorMessage, 'error'); + this.showLoginError(res); } }); } else { - this.resetCaptcha(); - this.confirmationService.alert(res.errorMessage, 'error'); + this.showLoginError(res); } } }, (err) => { - this.resetCaptcha(); - this.confirmationService.alert(err, 'error'); + this.showLoginError(err); }, ); } } + private showLoginError(error: any) { + this.resetCaptcha(); + this.confirmationService.alert(this.getLoginErrorMessage(error), 'error'); + } + + private getLoginErrorMessage(error: any): string { + if (typeof error === 'string' && error.trim()) { + return error; + } + + if (error?.errorMessage && typeof error.errorMessage === 'string') { + return error.errorMessage; + } + + if (error?.message && typeof error.message === 'string') { + return error.message; + } + + if ( + error?.error?.errorMessage && + typeof error.error.errorMessage === 'string' + ) { + return error.error.errorMessage; + } + + if (error?.error?.message && typeof error.error.message === 'string') { + return error.error.message; + } + + return 'Unable to login. Please try again.'; + } + getServicesAuthdetails(loginDataResponse: any) { const userName: any = this.loginForm.controls.userName.value; sessionStorage.setItem('key', loginDataResponse.key); diff --git a/src/app/user-login/service/service.component.ts b/src/app/user-login/service/service.component.ts index 5444e3d4..86e81023 100644 --- a/src/app/user-login/service/service.component.ts +++ b/src/app/user-login/service/service.component.ts @@ -182,7 +182,8 @@ export class ServiceComponent implements OnInit, DoCheck { const serviceProviderId: any = this.sessionstorage.getItem('providerServiceID'); const userId: any = this.sessionstorage.getItem('userID'); - const loginData = this.sessionstorage.getItem('loginDataResponse'); + const loginData = + this.sessionstorage.getItem('loginDataResponse') ?? '{}'; const parsedLoginData = JSON.parse(loginData); const designation = parsedLoginData.designation?.designationName; this.servicePointService diff --git a/tsconfig.json b/tsconfig.json index bd06c947..efe0918d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,6 +3,14 @@ "compileOnSave": false, "compilerOptions": { "baseUrl": "./", + "paths": { + "Common-UI/*": [ + "Common-UI/*" + ], + "Common-UI/src/*": [ + "Common-UI/src/*" + ] + }, "outDir": "./dist/out-tsc", "forceConsistentCasingInFileNames": true, "strict": true,