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,