diff --git a/package-lock.json b/package-lock.json index 337987dc6..5034b50a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "1.23.5-pre-1", + "version": "1.23.5-pre-2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "1.23.5-pre-1", + "version": "1.23.5-pre-2", "hasInstallScript": true, "license": "ISC", "dependencies": { @@ -171,6 +171,9 @@ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -188,6 +191,9 @@ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -205,6 +211,9 @@ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -222,6 +231,9 @@ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -1636,6 +1648,9 @@ "arm" ], "dev": true, + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -1653,6 +1668,9 @@ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -1670,6 +1688,9 @@ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -1687,6 +1708,9 @@ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -1704,6 +1728,9 @@ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -1721,6 +1748,9 @@ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -1738,6 +1768,9 @@ "arm" ], "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -1761,6 +1794,9 @@ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -1784,6 +1820,9 @@ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -1807,6 +1846,9 @@ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -1830,6 +1872,9 @@ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -1853,6 +1898,9 @@ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2277,16 +2325,22 @@ } }, "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.3.tgz", + "integrity": "sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ==", "dev": true, "license": "MIT", "optional": true, "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" } }, "node_modules/@nodelib/fs.scandir": { @@ -2480,6 +2534,9 @@ "cpu": [ "arm" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2500,6 +2557,9 @@ "cpu": [ "arm" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2520,6 +2580,9 @@ "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2540,6 +2603,9 @@ "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2560,6 +2626,9 @@ "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2580,6 +2649,9 @@ "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2887,6 +2959,9 @@ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2904,6 +2979,9 @@ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2921,6 +2999,9 @@ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2938,6 +3019,9 @@ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2955,6 +3039,9 @@ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2972,6 +3059,9 @@ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3015,23 +3105,6 @@ "node": ">=14.0.0" } }, - "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", - "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1", - "@tybys/wasm-util": "^0.10.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - } - }, "node_modules/@rolldown/binding-win32-arm64-msvc": { "version": "1.0.0-rc.9", "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.9.tgz", @@ -4901,6 +4974,9 @@ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4915,6 +4991,9 @@ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4929,6 +5008,9 @@ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4943,6 +5025,9 @@ "riscv64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4957,6 +5042,9 @@ "riscv64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4971,6 +5059,9 @@ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4985,6 +5076,9 @@ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4999,6 +5093,9 @@ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -5022,6 +5119,19 @@ "node": ">=14.0.0" } }, + "node_modules/@unrs/resolver-binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", @@ -9866,6 +9976,9 @@ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -9887,6 +10000,9 @@ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -9908,6 +10024,9 @@ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -9929,6 +10048,9 @@ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ diff --git a/package.json b/package.json index 759ac2863..a9d9a31de 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "1.23.5-pre-1", + "version": "1.23.5-pre-2", "description": "Supporting common component library", "type": "module", "main": "dist/index.js", diff --git a/src/Assets/Illustration/img-folder-create.svg b/src/Assets/Illustration/img-folder-create.svg new file mode 100644 index 000000000..cf412d6ab --- /dev/null +++ b/src/Assets/Illustration/img-folder-create.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Assets/Illustration/img-user-groups.svg b/src/Assets/Illustration/img-user-groups.svg new file mode 100644 index 000000000..8dc47544b --- /dev/null +++ b/src/Assets/Illustration/img-user-groups.svg @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Pages-Devtron-2.0/Navigation/types.ts b/src/Pages-Devtron-2.0/Navigation/types.ts index 8d9ddeef1..d07a81318 100644 --- a/src/Pages-Devtron-2.0/Navigation/types.ts +++ b/src/Pages-Devtron-2.0/Navigation/types.ts @@ -66,6 +66,7 @@ export type NavigationSubMenuItemID = | 'cost-visibility-cost-breakdown-applications' | 'global-configuration-authorization-user-permissions' | 'global-configuration-authorization-permission-groups' + | 'global-configuration-authorization-user-groups' | 'global-configuration-authorization-api-tokens' export type NavigationRootItemID = diff --git a/src/Pages-Devtron-2.0/Shared/Routes/routes.ts b/src/Pages-Devtron-2.0/Shared/Routes/routes.ts index 7ed41ef5e..68735bbd7 100644 --- a/src/Pages-Devtron-2.0/Shared/Routes/routes.ts +++ b/src/Pages-Devtron-2.0/Shared/Routes/routes.ts @@ -295,6 +295,9 @@ export const BASE_ROUTES = { LOGIN_SERVICE: 'login-service', USERS: 'users', GROUPS: 'groups', + USER_GROUPS: 'user-groups', + CREATE_USER_GROUP: 'create', + EDIT_USER_GROUP: 'edit/:identifier', API_TOKEN: 'api-token', }, }, @@ -678,6 +681,9 @@ export const ROUTER_URLS = { LOGIN_SERVICE: `${GLOBAL_CONFIG_AUTH_ROOT}/${BASE_ROUTES.GLOBAL_CONFIG.AUTH.LOGIN_SERVICE}`, USERS: `${GLOBAL_CONFIG_AUTH_ROOT}/${BASE_ROUTES.GLOBAL_CONFIG.AUTH.USERS}`, GROUPS: `${GLOBAL_CONFIG_AUTH_ROOT}/${BASE_ROUTES.GLOBAL_CONFIG.AUTH.GROUPS}`, + USER_GROUPS: `${GLOBAL_CONFIG_AUTH_ROOT}/${BASE_ROUTES.GLOBAL_CONFIG.AUTH.USER_GROUPS}`, + CREATE_USER_GROUP: `${GLOBAL_CONFIG_AUTH_ROOT}/${BASE_ROUTES.GLOBAL_CONFIG.AUTH.CREATE_USER_GROUP}`, + EDIT_USER_GROUP: `${GLOBAL_CONFIG_AUTH_ROOT}/${BASE_ROUTES.GLOBAL_CONFIG.AUTH.EDIT_USER_GROUP}`, API_TOKEN: `${GLOBAL_CONFIG_AUTH_ROOT}/${BASE_ROUTES.GLOBAL_CONFIG.AUTH.API_TOKEN}`, }, diff --git a/src/Pages/GlobalConfigurations/Authorization/types.ts b/src/Pages/GlobalConfigurations/Authorization/types.ts index 2d3e3c4e9..33dbe443d 100644 --- a/src/Pages/GlobalConfigurations/Authorization/types.ts +++ b/src/Pages/GlobalConfigurations/Authorization/types.ts @@ -84,10 +84,16 @@ export interface UserGroupDTO { * @default 0 */ usersCount?: number + /** + * User Email Ids of the users assigned to the group + * + * @default [] + */ + userEmails?: string[] } export interface UserGroupType extends Required< - Pick + Pick > { /** * Unique id of the user group diff --git a/src/Shared/Components/Illustration/Illustration.tsx b/src/Shared/Components/Illustration/Illustration.tsx index 813d71861..9ba4334bc 100644 --- a/src/Shared/Components/Illustration/Illustration.tsx +++ b/src/Shared/Components/Illustration/Illustration.tsx @@ -6,6 +6,7 @@ import EmptyStateKey from '@Illustrations/empty-state-key.svg?react' import ImgCelebration from '@Illustrations/img-celebration.svg?react' import ImgCode from '@Illustrations/img-code.webp' import ImgDevtronFreemium from '@Illustrations/img-devtron-freemium.webp' +import ImgFolderCreate from '@Illustrations/img-folder-create.svg?react' import ImgFolderEmpty from '@Illustrations/img-folder-empty.svg?react' import ImgInstallFreemiumSaas from '@Illustrations/img-install-freemium-saas.svg?react' import ImgInstallViaAwsMarketplace from '@Illustrations/img-install-via-aws-marketplace.svg?react' @@ -16,6 +17,7 @@ import ImgNoBackupLocation from '@Illustrations/img-no-backup-location.svg?react import ImgNoRestores from '@Illustrations/img-no-restores.svg?react' import ImgNoResult from '@Illustrations/img-no-result.webp' import ImgPageNotFound from '@Illustrations/img-page-not-found.svg?react' +import ImgUserGroups from '@Illustrations/img-user-groups.svg?react' import NoClusterCostEnabled from '@Illustrations/no-cluster-cost-enabled.webp' // eslint-disable-next-line no-restricted-imports @@ -25,6 +27,7 @@ import { IllustrationBaseProps } from './types' export const illustrationMap = { 'empty-state-key': EmptyStateKey, 'img-celebration': ImgCelebration, + 'img-folder-create': ImgFolderCreate, 'img-folder-empty': ImgFolderEmpty, 'img-install-freemium-saas': ImgInstallFreemiumSaas, 'img-install-via-aws-marketplace': ImgInstallViaAwsMarketplace, @@ -33,6 +36,7 @@ export const illustrationMap = { 'img-no-backup-location': ImgNoBackupLocation, 'img-no-restores': ImgNoRestores, 'img-page-not-found': ImgPageNotFound, + 'img-user-groups': ImgUserGroups, 'create-backup-schedule': CreateBackupSchedule, 'create-backup-snapshot': CreateBackupSnapshot, 'img-code': ImgCode,