* fix(ui): show password verification for take ownership (PROJQUAY-9658) Co-authored-by: Claude <noreply@anthropic.com> * fix(ui): add fresh login verification to superuser operations (PROJQUAY-9658) Implemented password verification modal for sensitive superuser operations that require fresh login. Added fresh login handling to: - Delete organization - Rename organization - Delete user - Create user - Change user password - Change user email Also fixed UseCreateUser hook to pass error object instead of string to enable fresh login detection. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix(ui): implement global fresh login with request queuing (PROJQUAY-9658) Replaced component-level fresh login handling with centralized axios interceptor approach. All failed requests due to fresh login requirement are now queued and automatically retried after password verification. - Add axios interceptor to catch 401 fresh_login_required globally - Implement request queuing mechanism for pending operations - Add global FreshLoginModal at app root level - Remove component-level useFreshLogin hook from all modals - Close operation modals immediately after submit (request queued if needed) - Add fresh login support for quota management operations * Add Cypress tests for fresh login flow (6 tests) * Address code rabbit reviews * fix(ui): handle fresh login password verification errors - Display error toast when wrong password entered in verification modal - Add centralized fresh login error filtering utility - Add Cypress tests for wrong password and retry scenarios --------- Co-authored-by: Claude <noreply@anthropic.com>
Quay UI
UI for Quay based on React and Patternfly framework
Installation
It is assumed that you have a Quay instance running that you can point the UI to. Run the following commands to get started
git clone https://github.com/quay/quay-ui.git
cd quay-ui
npm install
Development
Start the dev server by running
npm start
Runs the app in the development mode.
Open http://localhost:9000 to view it in the browser.
The page will reload if you make edits.
You will also see any lint errors in the console.
By default the UI connects to the quay backend for API. If you don't have
a backend or want to develop without a backend you can set the environment
variable MOCK_API=true before running npm start.
In order for you to use this with a Quay backend, you need to configure CORS on the Quay side.
Add the following to your config.yaml in Quay
CORS_ORIGIN: "http://localhost:9000"
If you are using docker-compose for local development, you can add this to local-dev/stack/config.yaml
in the Quay repo.
Testing
npm test
Launches the test runner in the interactive watch mode.
See the section about running tests for more information.
Integration Tests
Integration tests are ran via Cypress. The URL under test defaults to http://localhost:9000 and can be overriden with the baseUrl parameter in the cypress.config.ts file.
To run tests locally:
- Start the application with
npm start - When application has started run the tests with
npm run test:integration
Building for Production
npm run build
Builds the app for production to the dist folder.
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes. See the section about deployment for more information.