Skip to content

Conversation

@yomybaby
Copy link
Member

@yomybaby yomybaby commented Dec 23, 2025

Resolves FR-1808

Background

Backend.AI has two admin interfaces: the legacy Control Panel and the modern WebUI. Currently, comprehensive user management features (creation and modification) are only available in Control Panel, requiring administrators to switch between interfaces for different administrative tasks.

Changes

This PR migrates all user creation and modification features from Control Panel to WebUI, specifically within the UserSettingModal component.

New Components

  • AccessKeySelect: Component for selecting user access keys
  • GeneratedKeypairListModal: Modal for displaying newly generated credentials with download capability

Enhanced Features in UserSettingModal

  • Network Access Controls: IP allowlisting with CIDR support
  • Container Permissions: UID/GID configuration for container processes
  • Credential Management: Access key selection and automatic generation on user creation
  • Project/Group Assignments: Multi-project assignment support
  • Additional User Attributes: All existing Control Panel user settings

Technical Improvements

  • Added IP validation helpers (isValidIP, isValidIPv4, isValidIPv6, isCidrRange, isValidIPOrCidr)
  • Updated GraphQL queries to include new user fields
  • Comprehensive i18n translations for all new features across all supported languages
  • Updated dependencies (@types/lodash)

Testing

  • User creation with all new fields
  • User modification with enhanced options
  • Credential generation and display
  • IP validation (IPv4, IPv6, CIDR)
  • Form validation for all fields
  • i18n translations in all languages

Expected Outcome

Administrators can now perform comprehensive user management operations in WebUI without needing to use the legacy Control Panel interface.

Copy link
Member Author

yomybaby commented Dec 23, 2025


How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • flow:merge-queue - adds this PR to the back of the merge queue
  • flow:hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has required the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@github-actions
Copy link
Contributor

github-actions bot commented Dec 23, 2025

Coverage report for ./react

St.
Category Percentage Covered / Total
🔴 Statements
4.2% (-0.02% 🔻)
496/11797
🔴 Branches
3.63% (-0.02% 🔻)
298/8212
🔴 Functions
2.53% (-0.02% 🔻)
92/3630
🔴 Lines
4.18% (-0.02% 🔻)
482/11536
Show new covered files 🐣
St.
File Statements Branches Functions Lines
🔴
... / AccessKeySelect.tsx
0% 100% 0% 0%
🔴
... / GeneratedKeypairListModal.tsx
0% 0% 0% 0%
Show files with reduced coverage 🔻
St.
File Statements Branches Functions Lines
🔴 helper/index.tsx
41.38% (-4.03% 🔻)
36.81% (-4.04% 🔻)
25% (-2.66% 🔻)
41.76% (-4.02% 🔻)

Test suite run success

144 tests passing in 13 suites.

Report generated by 🧪jest coverage report action from 08934db

@yomybaby yomybaby marked this pull request as ready for review December 23, 2025 02:29
@yomybaby yomybaby force-pushed the feat/FR-1804-flexible-column-composition branch from a250d0d to ecaa4c3 Compare December 23, 2025 02:33
@yomybaby yomybaby force-pushed the feat/FR-1808-migrate-user-management-features branch from 173141d to 394e8b5 Compare December 23, 2025 02:33
@yomybaby yomybaby force-pushed the feat/FR-1804-flexible-column-composition branch from ecaa4c3 to a53bd4c Compare December 23, 2025 02:53
@yomybaby yomybaby force-pushed the feat/FR-1808-migrate-user-management-features branch from 394e8b5 to 1d05f8f Compare December 23, 2025 02:53
@yomybaby yomybaby force-pushed the feat/FR-1804-flexible-column-composition branch from a53bd4c to fd2ce6c Compare December 23, 2025 03:03
@yomybaby yomybaby force-pushed the feat/FR-1808-migrate-user-management-features branch from 1d05f8f to 9591f0a Compare December 23, 2025 03:03
@github-actions
Copy link
Contributor

github-actions bot commented Dec 23, 2025

Coverage report for ./packages/backend.ai-ui

St.
Category Percentage Covered / Total
🟡 Statements
60.64% (-0.06% 🔻)
228/376
🔴 Branches
33.66% (+0.32% 🔼)
104/309
🔴 Functions 48.31% 43/89
🟡 Lines
62.35% (-0.07% 🔻)
207/332

Test suite run success

146 tests passing in 8 suites.

Report generated by 🧪jest coverage report action from 08934db

@yomybaby yomybaby force-pushed the feat/FR-1808-migrate-user-management-features branch from 9591f0a to 02ccea8 Compare December 23, 2025 03:11
@yomybaby yomybaby force-pushed the feat/FR-1804-flexible-column-composition branch from fd2ce6c to 49fc675 Compare December 23, 2025 03:11
@yomybaby yomybaby force-pushed the feat/FR-1808-migrate-user-management-features branch from 02ccea8 to 905028f Compare December 23, 2025 03:18
@yomybaby yomybaby force-pushed the feat/FR-1804-flexible-column-composition branch from 49fc675 to 99d7387 Compare December 23, 2025 03:28
@yomybaby yomybaby force-pushed the feat/FR-1808-migrate-user-management-features branch from 905028f to 64d325d Compare December 23, 2025 03:28
@yomybaby yomybaby force-pushed the feat/FR-1808-migrate-user-management-features branch from 64d325d to e241a12 Compare December 23, 2025 08:19
@yomybaby yomybaby force-pushed the feat/FR-1804-flexible-column-composition branch from 99d7387 to 6f5f969 Compare December 23, 2025 08:19
@yomybaby yomybaby force-pushed the feat/FR-1808-migrate-user-management-features branch from e241a12 to 851e29f Compare December 23, 2025 10:22
@yomybaby yomybaby force-pushed the feat/FR-1804-flexible-column-composition branch from 6f5f969 to 7a76095 Compare December 23, 2025 10:22
@yomybaby yomybaby force-pushed the feat/FR-1808-migrate-user-management-features branch from 851e29f to 4b61c43 Compare December 23, 2025 10:30
@yomybaby yomybaby requested a review from nowgnuesLee December 23, 2025 11:53
@yomybaby yomybaby force-pushed the feat/FR-1808-migrate-user-management-features branch from b1b6f34 to 60ff91c Compare December 23, 2025 11:53
@yomybaby yomybaby force-pushed the feat/FR-1808-migrate-user-management-features branch from 60ff91c to fb25e5f Compare December 24, 2025 01:34
@yomybaby yomybaby force-pushed the feat/FR-1804-flexible-column-composition branch from 7a76095 to cacaf68 Compare December 24, 2025 01:34
@yomybaby yomybaby force-pushed the feat/FR-1808-migrate-user-management-features branch from fb25e5f to d5bf40b Compare December 24, 2025 01:38
@yomybaby yomybaby force-pushed the feat/FR-1804-flexible-column-composition branch from cacaf68 to 842515c Compare December 24, 2025 01:38
@yomybaby yomybaby force-pushed the feat/FR-1808-migrate-user-management-features branch from d5bf40b to 3981803 Compare December 24, 2025 01:53
@yomybaby yomybaby requested a review from nowgnuesLee December 24, 2025 01:54
@yomybaby yomybaby force-pushed the feat/FR-1804-flexible-column-composition branch from 842515c to b185122 Compare December 24, 2025 02:57
@yomybaby yomybaby force-pushed the feat/FR-1808-migrate-user-management-features branch from 3981803 to 6d03907 Compare December 24, 2025 02:57
Copy link
Contributor

@nowgnuesLee nowgnuesLee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@nowgnuesLee nowgnuesLee force-pushed the feat/FR-1804-flexible-column-composition branch from b185122 to f45d1dd Compare December 24, 2025 04:18
@nowgnuesLee nowgnuesLee force-pushed the feat/FR-1808-migrate-user-management-features branch from 6d03907 to c8d9c93 Compare December 24, 2025 04:18
@yomybaby yomybaby force-pushed the feat/FR-1808-migrate-user-management-features branch from c8d9c93 to f94a2df Compare December 24, 2025 04:25
@yomybaby yomybaby force-pushed the feat/FR-1804-flexible-column-composition branch from f45d1dd to 7b90a82 Compare December 24, 2025 04:25
Copy link
Contributor

@ironAiken2 ironAiken2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Control Panel provides a permanent deletion feature for users. Is it acceptable to exclude this feature? Also, in the UserInfoModal, additional information should be displayed for super-admins.

Copy link
Member Author

yomybaby commented Dec 24, 2025

The Control Panel provides a permanent deletion feature for users. Is it acceptable to exclude this feature? Also, in the UserInfoModal, additional information should be displayed for super-admins.

This will be handled in https://lablup.atlassian.net/browse/FR-1821

@yomybaby yomybaby requested a review from ironAiken2 December 24, 2025 04:37
Copy link
Contributor

@ironAiken2 ironAiken2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@graphite-app
Copy link

graphite-app bot commented Dec 24, 2025

Merge activity

…ontrol Panel to WebUI (#4876)

Resolves [FR-1808](https://lablup.atlassian.net/browse/FR-1808)

## Background
Backend.AI has two admin interfaces: the legacy Control Panel and the modern WebUI. Currently, comprehensive user management features (creation and modification) are only available in Control Panel, requiring administrators to switch between interfaces for different administrative tasks.

## Changes
This PR migrates all user creation and modification features from Control Panel to WebUI, specifically within the `UserSettingModal` component.

### New Components
- **AccessKeySelect**: Component for selecting user access keys
- **GeneratedKeypairListModal**: Modal for displaying newly generated credentials with download capability

### Enhanced Features in UserSettingModal
- **Network Access Controls**: IP allowlisting with CIDR support
- **Container Permissions**: UID/GID configuration for container processes
- **Credential Management**: Access key selection and automatic generation on user creation
- **Project/Group Assignments**: Multi-project assignment support
- **Additional User Attributes**: All existing Control Panel user settings

### Technical Improvements
- Added IP validation helpers (`isValidIP`, `isValidIPv4`, `isValidIPv6`, `isCidrRange`, `isValidIPOrCidr`)
- Updated GraphQL queries to include new user fields
- Comprehensive i18n translations for all new features across all supported languages
- Updated dependencies (@types/lodash)

## Testing
- [x] User creation with all new fields
- [x] User modification with enhanced options
- [x] Credential generation and display
- [x] IP validation (IPv4, IPv6, CIDR)
- [x] Form validation for all fields
- [x] i18n translations in all languages

## Expected Outcome
Administrators can now perform comprehensive user management operations in WebUI without needing to use the legacy Control Panel interface.

[FR-1808]: https://lablup.atlassian.net/browse/FR-1808?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
@graphite-app graphite-app bot force-pushed the feat/FR-1804-flexible-column-composition branch from 7b90a82 to bc71618 Compare December 24, 2025 04:49
@graphite-app graphite-app bot force-pushed the feat/FR-1808-migrate-user-management-features branch from f94a2df to 08934db Compare December 24, 2025 04:49
Base automatically changed from feat/FR-1804-flexible-column-composition to main December 24, 2025 04:50
@graphite-app graphite-app bot merged commit 08934db into main Dec 24, 2025
9 checks passed
@graphite-app graphite-app bot deleted the feat/FR-1808-migrate-user-management-features branch December 24, 2025 04:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:i18n Localization area:ux UI / UX issue. size:XL 500~ LoC

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants