chore: update main repo with latest changes from zitadel repo#7
Closed
yahyafakhroji wants to merge 33 commits into
Closed
chore: update main repo with latest changes from zitadel repo#7yahyafakhroji wants to merge 33 commits into
yahyafakhroji wants to merge 33 commits into
Conversation
# Which Problems Are Solved - The previous monorepo in monorepo structure for the login app and its related packages was fragmented, complicated and buggy. - The process for building and testing the login container was inconsistent between local development and CI. - Lack of clear documentation as well as easy and reliable ways for non-frontend developers to reproduce and fix failing PR checks locally. # How the Problems Are Solved - Consolidated the login app and its related npm packages by moving the main package to `apps/login/apps/login` and merging `apps/login/packages/integration` and `apps/login/packages/acceptance` into the main `apps/login` package. - Migrated from Docker Compose-based test setups to dev container-based setups, adding support for multiple dev container configurations: - `.devcontainer/base` - `.devcontainer/turbo-lint-unit` - `.devcontainer/turbo-lint-unit-debug` - `.devcontainer/login-integration` - `.devcontainer/login-integration-debug` - Added npm scripts to run the new dev container setups, enabling exact reproduction of GitHub PR checks locally, and updated the pipeline to use these containers. - Cleaned up Dockerfiles and docker-bake.hcl files to only build the production image for the login app. - Cleaned up compose files to focus on dev environments in dev containers. - Updated `CONTRIBUTING.md` with guidance on running and debugging PR checks locally using the new dev container approach. - Introduced separate Dockerfiles for the login app to distinguish between using published client packages and building clients from local protos. - Ensured the login container is always built in the pipeline for use in integration and acceptance tests. - Updated Makefile and GitHub Actions workflows to use `--frozen-lockfile` for installing pnpm packages, ensuring reproducible installs. - Disabled GitHub release creation by the changeset action. - Refactored the `/build` directory structure for clarity and maintainability. - Added a `clean` command to `docks/package.json`. - Experimentally added `knip` to the `zitadel-client` package for improved linting of dependencies and exports. # Additional Changes - Fixed Makefile commands for consistency and reliability. - Improved the structure and clarity of the `/build` directory to support seamless integration of the login build. - Enhanced documentation and developer experience for running and debugging CI checks locally. # Additional Context - See updated `CONTRIBUTING.md` for new local development and debugging instructions. - These changes are a prerequisite for further improvements to the CI pipeline and local development workflow. - Closes #10276
# Which Problems Are Solved Since #10305 we have the following two files in `/apps/login` - /apps/login/README.md - /apps/login/readme.md This confused case insensitive file systems, causing strange Git behavior. # How the Problems Are Solved We remove the obsolete /apps/login/README.md file.
This PR introduces CJS support for @zitadel/client and @zitadel/proto from zitadel/zitadel#10290 and fixes a module resolution error of @zitadel/client --------- Co-authored-by: reluc <relu.cri@gmail.com>
This PR includes scripts for cleaning up workspaces, and changes the versions of @zitadel/client and /proto to v1.3.0
# Which Problems Are Solved The broken login image is fixed. # How the Problems Are Solved The most important learnings from zitadel/zitadel#10318 are applied: - Path in entrypoint is fixed: `exec node /runtime/apps/login/server.js` - .dockerignore is updated so CSS styles are built into the image - `source: .` is passed to the docker-bake action. Without this, docker-bake builds from a remote context, which seems to be slow and not updated on new PR commits. Looks like the bake action uploads an artifact that [conflicts with the compile workflow](https://github.com/zitadel/zitadel/actions/runs/16620417216/job/47023478437). Therefore, a pattern is added to the compile workflow so only relevant artifacts are selected.
# Which Problems Are Solved Login integration tests are not executed in the pipeline # How the Problems Are Solved The login integration tests are fixed and added as a pipeline workflow. It tests against the built login docker image. On pipeline failures, developers are guided on how to fix them using a dev container configured for this purpose. # Additional Changes - email domains are replaced by example.com. In case the tests were accidentally run against a cloud instance, it wouldn't cause bounces. - pnpm is upgraded, because the --filter argument doesn't work for the install command on the old version. - The login Dockerfile is optimized for docker image builds # Additional Changes From Review for zitadel/zitadel#10305 These changes were requested from @peintnermax - The base dev container starts without any services besides the database and the dev container itself - CONTRIBUTING.md is restructured - To reproduce pipeline checks, only the devcontainer CLI and Docker are needed. This is described in the CONTRIBUTING.md - The convenience npm script "generate" is added # Additional Context - Follow-up for PR zitadel/zitadel#10305 - Base for zitadel/zitadel#10277
# Which Problems Are Solved - form-data Math.random() vulnerability # How the Problems Are Solved - Overrides the form-data usage in pnpm to a patched version # Additional Context CVE ID: GHSA-fjxv-7rqg-78g4 GHSA ID: GHSA-fjxv-7rqg-78g4
chore: mirror zitadel repo
# Which Problems Are Solved Updates the pnpm lockfile for the login repo. # How the Problems Are Solved Used the login dev container and ran `pnpm i` # Additional Context From this branch, `make login_push LOGIN_REMOTE_BRANCH=mirror-zitadel-repo` was executed to sync the login code with zitadel#573 Co-authored-by: Max Peintner <max@caos.ch>
# Which Problems Are Solved The login integration action page load in the idp test times out sometimes. Also, the debug steps fail, which cause confusion about why the pipeline check failed. # How the Problems Are Solved - We retry failed tests twice, which should alleviate flakiness because of eventual consistency. This is fine for now, because typically, a user doesn't send input as fast as the tests do. - The compose file path is fixed. - ~~As suggested in the cypress error logs, we increase the pageLoadTimeout.~~ The increased pageLoadTimeout didn't help. # Additional Context - Example of a failing check: https://github.com/zitadel/zitadel/actions/runs/16829948857/attempts/1 --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Max Peintner <max@caos.ch>
this updates the lockfile to represent the latest package version for latest
chore: mirror zitadel repo
…te .gitignore - Introduced a new docker-compose.yml file to define services for Zitadel, including a PostgreSQL database and Mailhog for testing. - Updated .gitignore to exclude the machinekey directory.
…n.yaml to include it
…shing Auth UI Docker image
yahyafakhroji
added a commit
that referenced
this pull request
Jul 5, 2026
Fixes 31 of 32 confirmed findings from the adversarially-verified ultracode audit of the auth-ui rebuild; #16 is partially fixed with a documented residual. All changes typecheck clean and pass the mirrored cypress component specs. See docs/AUDIT-FINDINGS.md for the full per-finding detail and status. Highlights by subsystem: - session/device: device-authorization grants no longer auto-complete from the forgeable GET /signed-in; they route to the CSRF-protected /device/authorize consent screen (explicit Approve showing app + scope). (#10) - rate-limit: limiters mount on '*' and self-guard on a normalized (lowercased, .data-stripped) path, closing the case-variant and single-fetch bypasses. (#1, #11) - verify: email-code resend is gated on server-verified session ownership and never 500s / enumerates; requestId validated + encoded into the /authorize hand-back. (#9, #25, #30) - signup: registration policy (allowRegister/allowPassword/passkeysType) enforced in the actions; duplicate-email responses emit a Set-Cookie (presence oracle closed, content/size residual documented — #16); fingerprintId used instead of the MaxMind token; requestId resumed on email-link complete. (#3, #4, #14, #16, #17) - sso: guarded getSession/startIdpIntent (graceful branded errors, not 500s); LDAP reauth cookie cleared; ProviderError on sign-in mapped to the branded page; deviceTrackingToken threaded on auto-link. (#2, #5, #6, #13, #19, #20, #21) - providers/mappers: U2F factor derived from the webAuthN proto factor (fixes the U2F login loop); failedAttempts extracted with the proper schema; forceMfaLocalOnly kept distinct from forceMfa. (#0, #7, #22) - session cookie: dual-format (ISO/epoch) timestamp parsing in the eviction pre-pass so the 2KB budget is respected. (#8) - webauthn: real browsers without WebAuthn see the unsupported message instead of submitting the Cypress fake credential. (#27) - fraud: MaxMind token falls back to the cookie when it lands after the poll budget; default-org cache keyed per service URL. (#28, #29) - audit logging: raw loginName replaced with hashActor across OTP/webauthn/password reset events. (#23, #24, #26) - setup: safeParse on tampered skip params; TOTP register guarded. (#12, #31) Verification (2026-07-04): the 12 findings applied in the prior batch were independently re-verified (verifier + adversary per finding). 9 closed cleanly; #10 (device-auth) was incomplete and #30 (resend test) was a regression — both re-fixed here; #16 (signup enumeration) is partial, with the residual documented and full closure (sessions-cookie encryption) deferred by owner decision. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017UhyUkaSmoNFax5wu2aHfi
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.