Skip to content

feat(cyod): iOS signing certificates for org and project - #1715

Open
ssingh55 wants to merge 2 commits into
cyod-03-org-registration-togglefrom
cyod-04-signing-certificates
Open

feat(cyod): iOS signing certificates for org and project#1715
ssingh55 wants to merge 2 commits into
cyod-03-org-registration-togglefrom
cyod-04-signing-certificates

Conversation

@ssingh55

Copy link
Copy Markdown

4/7 in the CYOD stack. Bases on #1714 (cyod-03-org-registration-toggle). Merge in order 01→07.

Org- and project-level iOS signing certificates: the add-certificate drawer, the existing-certificates tab, and delete confirmation. Also wires both this and 03's toggle into the organization settings page.

Design review applied: py-2 px-4 drawer body, dark dividers, tip callout at 4px radius on a 4px accent bar, medium input labels, italic "No file chosen", selected files as removable chips, and the certificate card ramp from the Figma frames (name 700, meta labels 12px/500, values 12px/600).

cc @Yibaebi — the delete dialog and the card ramp are the two worth a close look.

@ssingh55
ssingh55 requested a review from Yibaebi August 10, 2026 02:57
@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9058c24a-cb99-42eb-81fa-982efe2de67b

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 10, 2026

Copy link
Copy Markdown

Deploying irenestaging with  Cloudflare Pages  Cloudflare Pages

Latest commit: 6fdbd41
Status: ✅  Deploy successful!
Preview URL: https://33170574.irenestaging.pages.dev
Branch Preview URL: https://cyod-04-signing-certificates.irenestaging.pages.dev

View logs

Comment thread app/components/organization/settings/index.hbs Outdated
Comment thread app/components/organization/settings/index.hbs Outdated
Comment thread app/components/organization/signing-certificate/index.hbs Outdated
Comment thread app/components/organization/signing-certificate/index.hbs Outdated
Comment thread app/components/organization/signing-certificate/index.hbs
Comment thread translations/ja.json Outdated
Comment thread app/components/organization/signing-certificate/index.ts Outdated
Comment thread app/components/organization/signing-certificate/index.ts
Comment thread app/components/organization/signing-certificate/index.ts
Comment thread app/components/organization/signing-certificate/index.hbs Outdated
@avzz-19
avzz-19 force-pushed the cyod-03-org-registration-toggle branch 2 times, most recently from 115f196 to 77765a7 Compare August 24, 2026 17:46
@avzz-19
avzz-19 force-pushed the cyod-04-signing-certificates branch from a7fdd76 to f0e5563 Compare August 24, 2026 17:49
@avzz-19
avzz-19 force-pushed the cyod-03-org-registration-toggle branch from 77765a7 to 3c06946 Compare August 25, 2026 04:41
@avzz-19
avzz-19 force-pushed the cyod-04-signing-certificates branch from f0e5563 to 0fe819e Compare August 25, 2026 04:41
fix(cyod): review fixes for the account settings CYOD page

- ak-svg/toggle-automated-dast: accept ...attributes. This page renders it with
  a data-test attribute that was silently dropped, so the disabled-state test
  failed on this branch and only passed once a later PR added the splat.
- cyod-settings: point the owner at Organization Settings to enable CYOD
  instead of telling them to contact an owner, and give the inner stack a full
  width so the panel's sections stop being sized by their own content.
- device-table: put the loading state in a bordered box with the loader and
  label centred, so the table area keeps its footprint while loading.
- Drop the unused cyod-devices-empty and cyod-turn-on SVG components.
- Add the CYOD settings route to the Account Settings sidenav currentWhen.
- Replace the hand-built test doubles with mirage: new registered-device model
  and factory, role traits on organization-me, CYOD traits on organization, and
  a registered-devices route.
fix(cyod): hide activate for expired certs, surface field errors

The activate button no longer renders for an expired certificate. mycroft
now answers 400 for that (cannot activate an expired certificate), so
offering the button only produced a guaranteed error.

Removed rather than disabled, on two counts: the row already carries an
Expired chip in error colour, so the absence is explained on screen; and the
template already removes rather than disables for the analogous case -- an
already-active cert has no button either. One condition, same shape as the
one beside it.

parse-error: read DRF field-keyed error bodies. Validation failures on the
signing-certificate upload now come back as {'p12': ['file too large...']}
rather than {'detail': ...}, because the validation moved into the
serializer. Without this the user saw the generic 'please try again' and
lost the reason.

The new branch is appended last in the existing if/else chain, so detail,
message, title and the 500/0 statuses all short-circuit before it -- none of
the ~160 existing call sites change behaviour. It only reads values that are
arrays of strings, which is the shape DRF produces for field errors, so a
stray string field in an error body is not mistaken for the message.

There was no test for parse-error at all; there are 7 now, covering the new
shape and pinning the existing ones. 16 component tests pass, including the
new expired-cert case.

fix(cyod): review fixes for the iOS signing certificates

- Limit the project-scope panel to org admins and owners. The org-scope panel
  is owner-only, so without this the project-scope override let any member
  upload a .p12 and password, read enrolled UDIDs, and delete the certificate.
- Allow deleting a lone active certificate. Exactly one certificate is always
  active, so gating on is_active alone locked a single-certificate org out of
  ever removing it; the backend only refuses while siblings exist.
- Fix the provisioning-profile picker, which rendered a button rather than a
  label and so never opened its hidden file input.
- Mark the p12 password mandatory, with a primary-colour asterisk, the required
  attribute, and Save gated on it.
- Move the field labels out of AkTextField's @Label so they match the drawer's
  other labels, keeping the accessible name via aria-label.
- Put the "no certificates" empty state in a bordered box.
- Drop the delete-confirmation reason field and put the actions directly under
  the question rather than pinned to the drawer footer. The delete now sends no
  body, so the reason state, request options, styles and placeholder copy go
  with it.
- Rework the tests onto mirage, replacing the ajax service stubs.
- Format parse-error-test.js, which was failing the lint job.
@avzz-19
avzz-19 force-pushed the cyod-03-org-registration-toggle branch from 3c06946 to fb50fb3 Compare August 25, 2026 05:53
@avzz-19
avzz-19 force-pushed the cyod-04-signing-certificates branch from 0fe819e to 6fdbd41 Compare August 25, 2026 05:53
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants