From 2e699b170d89f3e083f6c49494892acc38470cd8 Mon Sep 17 00:00:00 2001 From: Daniel Holmes Date: Thu, 1 Feb 2024 13:00:31 +1100 Subject: [PATCH] Fixed some MFA related fields --- package-lock.json | 114 +++++++++++++++------------- package.json | 8 +- src/model/get-current-user.ts | 6 +- src/model/session-to-auth-access.ts | 4 +- src/signed-in-auth-state.ts | 2 +- 5 files changed, 76 insertions(+), 58 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7b599a5..9641b5d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { "name": "@dhau/react-aws-cognito", - "version": "0.0.7", + "version": "0.0.10", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@dhau/react-aws-cognito", - "version": "0.0.7", + "version": "0.0.10", "license": "MIT", "dependencies": { - "@dhau/lang-extras": "^0.0.4", + "@dhau/lang-extras": "^0.0.5", "date-fns": "^3.3.1" }, "devDependencies": { @@ -17,7 +17,7 @@ "@types/lodash-es": "^4.17.6", "@types/react": ">=18.0.0", "amazon-cognito-identity-js": "^6.0.0", - "husky": "^8.0.3", + "husky": "^9.0.7", "lint-staged": "^15.2.0", "msw": "^2.1.4", "npm-run-all": "^4.1.5", @@ -59,9 +59,9 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.496.0.tgz", - "integrity": "sha512-umkGadK4QuNQaMoDICMm7NKRI/mYSXiyPjcn3d53BhsuArYU/52CebGQKdt4At7SwwsiVJZw9RNBHyN5Mm0HVw==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.502.0.tgz", + "integrity": "sha512-M0DSPYe/gXhwD2QHgoukaZv5oDxhW3FfvYIrJptyqUq3OnPJBcDbihHjrE0PBtfh/9kgMZT60/fQ2NVFANfa2g==", "dev": true, "dependencies": { "@smithy/types": "^2.9.1", @@ -111,9 +111,9 @@ } }, "node_modules/@dhau/lang-extras": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@dhau/lang-extras/-/lang-extras-0.0.4.tgz", - "integrity": "sha512-I8T6WRW5f7winkM1gLHDzTTixtgdGC/n15ChKk+Xj3y++lKSKh555KGnoFr/NEasaEI/wcLWgYdSASD/L9TO9w==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@dhau/lang-extras/-/lang-extras-0.0.5.tgz", + "integrity": "sha512-1Gd0tY8yImDN27/nIlf2JwwgUHhHAVdcECUkymb72lFtOLub4V6tZc4roO7IugeXUvDDQrfAmm+ZVnpiKmoJPg==", "engines": { "node": ">=16.0.0" } @@ -128,9 +128,9 @@ } }, "node_modules/@mswjs/interceptors": { - "version": "0.25.14", - "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.25.14.tgz", - "integrity": "sha512-2dnIxl+obqIqjoPXTFldhe6pcdOrqiz+GcLaQQ6hmL02OldAF7nIC+rUgTWm+iF6lvmyCVhFFqbgbapNhR8eag==", + "version": "0.25.15", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.25.15.tgz", + "integrity": "sha512-s4jdyxmq1eeftfDXJ7MUiK/jlvYaU8Sr75+42hHCVBrYez0k51RHbMitKIKdmsF92Q6gwhp8Sm1MmvdA9llpcg==", "dev": true, "dependencies": { "@open-draft/deferred-promise": "^2.2.0", @@ -1191,18 +1191,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -1530,15 +1518,15 @@ } }, "node_modules/husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.7.tgz", + "integrity": "sha512-vWdusw+y12DUEeoZqW1kplOFqk3tedGV8qlga8/SF6a3lOiWLqGZZQvfWvY0fQYdfiRi/u1DFNpudTSV9l1aCg==", "dev": true, "bin": { - "husky": "lib/bin.js" + "husky": "bin.js" }, "engines": { - "node": ">=14" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/typicode" @@ -1745,6 +1733,12 @@ "node": ">=8" } }, + "node_modules/inquirer/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/inquirer/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -2153,9 +2147,9 @@ } }, "node_modules/lint-staged": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.0.tgz", - "integrity": "sha512-TFZzUEV00f+2YLaVPWBWGAMq7So6yQx+GG8YRMDeOEIf95Zn5RyiLMsEiX4KTNl9vq/w+NqRJkLA1kPIo15ufQ==", + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.1.tgz", + "integrity": "sha512-dhwAPnM85VdshybV9FWI/9ghTvMLoQLEXgVMx+ua2DN7mdfzd/tRfoU2yhMcBac0RHkofoxdnnJUokr8s4zKmQ==", "dev": true, "dependencies": { "chalk": "5.3.0", @@ -2163,7 +2157,7 @@ "debug": "4.3.4", "execa": "8.0.1", "lilconfig": "3.0.0", - "listr2": "8.0.0", + "listr2": "8.0.1", "micromatch": "4.0.5", "pidtree": "0.6.0", "string-argv": "0.3.2", @@ -2180,9 +2174,9 @@ } }, "node_modules/listr2": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.0.0.tgz", - "integrity": "sha512-u8cusxAcyqAiQ2RhYvV7kRKNLgUvtObIbhOX2NCXqvp1UU32xIg5CT22ykS2TPKJXZWJwtK3IKLiqAGlGNE+Zg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.0.1.tgz", + "integrity": "sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==", "dev": true, "dependencies": { "cli-truncate": "^4.0.0", @@ -2415,16 +2409,16 @@ "dev": true }, "node_modules/msw": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/msw/-/msw-2.1.4.tgz", - "integrity": "sha512-YyIQpfLqAJf/O1kYPWBSbDqjgv71kRBmEbGLxkkai1Btcs/LcxKiAwT1My3COa9J/vTh9Ua41B/ReuiW9cXmkw==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.1.5.tgz", + "integrity": "sha512-r39AZk4taMmUEYwtzDAgFy38feqJy1yaKykvo0QE8q7H7c28yH/WIlOmE7oatjkC3dMgpTYfND8MaxeywgU+Yg==", "dev": true, "hasInstallScript": true, "dependencies": { "@bundled-es-modules/cookie": "^2.0.0", "@bundled-es-modules/statuses": "^1.0.1", "@mswjs/cookies": "^1.1.0", - "@mswjs/interceptors": "^0.25.14", + "@mswjs/interceptors": "^0.25.15", "@open-draft/until": "^2.1.0", "@types/cookie": "^0.6.0", "@types/statuses": "^2.0.4", @@ -2509,9 +2503,9 @@ "dev": true }, "node_modules/msw/node_modules/type-fest": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.0.tgz", - "integrity": "sha512-NPaKJsb4wyJ16qc8zBQrWswLKv/YirgBFykvUQ1Iajt2wd+twC8E4hFXdlIXqiMl6kWA0zY8tUJ9ELVAdu5h7w==", + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.2.tgz", + "integrity": "sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==", "dev": true, "engines": { "node": ">=16" @@ -2911,6 +2905,12 @@ "node": ">=8" } }, + "node_modules/ora/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/ora/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -3180,6 +3180,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/rfdc": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", @@ -3402,10 +3408,16 @@ } }, "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/slice-ansi": { "version": "5.0.0", @@ -3446,9 +3458,9 @@ } }, "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz", + "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==", "dev": true }, "node_modules/spdx-expression-parse": { diff --git a/package.json b/package.json index b13fd0b..26da292 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { "name": "@dhau/react-aws-cognito", - "version": "0.0.10", + "version": "0.0.11", "type": "module", "sideEffects": false, "description": "Context and hooks to manage an AWS Cognito authenticated user in React.", - "main": "./dist/index.js", + "main": "./dist/index.mjs", "types": "./dist/index.d.ts", "module": "./dist/index.mjs", "exports": { @@ -35,7 +35,7 @@ "author": "Daniel Holmes", "license": "MIT", "dependencies": { - "@dhau/lang-extras": "^0.0.4", + "@dhau/lang-extras": "^0.0.5", "date-fns": "^3.3.1" }, "devDependencies": { @@ -43,7 +43,7 @@ "@types/lodash-es": "^4.17.6", "@types/react": ">=18.0.0", "amazon-cognito-identity-js": "^6.0.0", - "husky": "^8.0.3", + "husky": "^9.0.7", "lint-staged": "^15.2.0", "msw": "^2.1.4", "npm-run-all": "^4.1.5", diff --git a/src/model/get-current-user.ts b/src/model/get-current-user.ts index 270e1b0..fe1a29d 100644 --- a/src/model/get-current-user.ts +++ b/src/model/get-current-user.ts @@ -10,7 +10,9 @@ import sessionToAuthAccess from "./session-to-auth-access"; type UserBundle = { readonly cognitoUser: CognitoUser; - readonly authUser: TUser; + readonly authUser: TUser & { + readonly isMfaEnabled: boolean; + }; }; type UserParser = (data: UserData, session: CognitoUserSession) => TUser; @@ -39,6 +41,8 @@ async function baseGetUserData( resolve({ ...parseUser(data, session), ...sessionToAuthAccess(session), + // Typing is wrong for lib - PreferredMfaSetting should be string | undefined + isMfaEnabled: data.PreferredMfaSetting !== undefined, }); }, { bypassCache }, diff --git a/src/model/session-to-auth-access.ts b/src/model/session-to-auth-access.ts index 626f958..5412a7e 100644 --- a/src/model/session-to-auth-access.ts +++ b/src/model/session-to-auth-access.ts @@ -8,7 +8,9 @@ function sessionToAuthAccess(session: CognitoUserSession) { }; } -type AuthAccess = ReturnType; +type AuthAccess = ReturnType & { + readonly isMfaEnabled: boolean; +}; export type { AuthAccess }; export default sessionToAuthAccess; diff --git a/src/signed-in-auth-state.ts b/src/signed-in-auth-state.ts index e0baabf..c450ea3 100644 --- a/src/signed-in-auth-state.ts +++ b/src/signed-in-auth-state.ts @@ -60,7 +60,7 @@ function createSignedInAuthState({ parseUser, user, ), - disableMfa: partial(disableMfa, setInternalAuthState, parseUser, user), + disableMfa: async () => disableMfa(setInternalAuthState, parseUser, user), getMfaCodeUrl: partial(getMfaCodeUrl, mfaIssuer, user), refreshUser, verifyEmailAddress: partial(