Skip to content

docs: add USER_GUIDE and ADMIN_GUIDE; fix SELF_CERTIFY two-layer gate#132

Merged
coopernetes merged 1 commit intomainfrom
docs/user-and-admin-guides
Apr 12, 2026
Merged

docs: add USER_GUIDE and ADMIN_GUIDE; fix SELF_CERTIFY two-layer gate#132
coopernetes merged 1 commit intomainfrom
docs/user-and-admin-guides

Conversation

@coopernetes
Copy link
Copy Markdown
Owner

@coopernetes coopernetes commented Apr 11, 2026

Summary

  • Docs: USER_GUIDE.md and ADMIN_GUIDE.md covering push flows, approval/review, self-certify, proxy output formats, environment variables, authentication providers, and deployment; closes docs: identify and fill gaps in user-facing, administrator, and deployment documentation #86
  • Docs: Log4j2 configuration documented; NO_COLOR / GITPROXY_NO_EMOJI env vars documented
  • Feat: require-review-permission config knob — restrict who can approve/reject pushes; closes feat: make REVIEW permission opt-in; default to any authenticated user can review #131
  • Feat: /api/me returns user permissions; profile page displays roles
  • Feat: Nav labels renamed and reordered; Users page restricted to admins
  • Fix: YAML access rule operations field was ignored when building UrlRuleFilter instances — PUSH-only deny rules incorrectly blocked FETCH requests. Fixed in both the doHttpFilter deny/allow loops and applyInfoRefsRules
  • Fix: Access rule dialog slug placeholders now include the required leading /; hint added explaining the slug format

Test plan

  • Clone via proxy for a repo with a PUSH-only deny rule succeeds
  • Clone via proxy for a repo with no allow rule returns 403
  • Push to a denied repo is still blocked
  • Unit test: UrlRuleFilterTest.infoRefs_uploadPack_pushOnlyDenyRule_doesNotBlock
  • Dashboard: access rule dialog shows /myorg/myrepo placeholder and slug hint for all three pattern types
  • User and admin guide docs render correctly on the branch

Comment thread docs/ADMIN_GUIDE.md Outdated
## User accounts

git-proxy-java supports four authentication backends. **LDAP, AD, and OIDC are the expected production choices.**
Local auth (static users in YAML) is useful for development, demos, and smoke-testing — not for multi-user
Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Local auth does insert into the database. Can be used outside of static config (add/remove users, reset passwords, etc).

Comment thread docs/ADMIN_GUIDE.md Outdated
| `ADMIN` | Everything USER can do, plus: create/delete users, reset passwords, manage any user's profile, view all push records |
| `SELF_CERTIFY` | Grants the **capability** to self-approve pushes. This is the prerequisite gate — it must be present before any per-repo `SELF_CERTIFY` permission takes effect. |

`ROLE_USER` is granted to every authenticated user automatically. A user with no `roles:` entry has `USER`
Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Need this fixed. It should still be by group/role authority mapping. Most orgs will not want to grant all users ability to interact with the system. There may be an issue for this already.

Comment thread docs/ADMIN_GUIDE.md
your org's IdP or IAM process. Self-approval requires **both** this role and a per-repo `SELF_CERTIFY`
permission entry — neither alone is sufficient. This separation lets organisations externalise the capability
grant (who is trusted to self-certify at all) to their existing directory/IAM procedures, while the per-repo
entitlement remains managed inside git-proxy-java.
Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

We need to make self certify a configuration toggle. Some orgs may want to disable this feature out right and enforce 4-eyes.

Comment thread docs/USER_GUIDE.md Outdated
### Attestation questions

The administrator may configure attestation questions that you must answer before a push is approved. These appear
in the dashboard push record view, not in the terminal. A reviewer (or yourself, if you have `REVIEW` permission
Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

There is a specific permission for self_review.

Comment thread docs/USER_GUIDE.md Outdated
**User permissions** (`permissions`) control which proxy users can perform which operations on specific repositories.
Even if a repository is in the allow list, you need an explicit `PUSH` permission entry to push to it.

In practice: if you get "repository not permitted", it could be either layer. Your administrator can check
Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Nope. The feedback to the git client is clear when it is user permission missing vs repository url not permitted.

@coopernetes coopernetes force-pushed the docs/user-and-admin-guides branch from 04c444e to e164896 Compare April 11, 2026 23:19
…ovements

Docs:
- Add USER_GUIDE.md and ADMIN_GUIDE.md covering push flows, approval,
  self-certify, proxy output, env vars, auth providers, and deployment;
  closes #86
- Document Log4j2 configuration, NO_COLOR and GITPROXY_NO_EMOJI env vars
- Replace Logback with Log4j2 for Apache-2.0 license compliance

Features:
- require-review-permission config knob — restrict who can approve/reject
  pushes to a configurable role; closes #131
- /api/me returns user permissions; profile page displays roles
- Nav labels renamed and reordered; Users page restricted to admins

Fixes:
- YAML access rule operations field was ignored when building UrlRuleFilter
  instances — PUSH-only deny rules incorrectly blocked FETCH requests in
  both the doHttpFilter deny/allow loops and applyInfoRefsRules
- Access rule dialog slug placeholders now include the required leading /;
  hint added explaining the slug format requirement

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@coopernetes coopernetes force-pushed the docs/user-and-admin-guides branch from 2b8bab9 to 9665544 Compare April 12, 2026 00:27
@coopernetes coopernetes merged commit 1ce2097 into main Apr 12, 2026
8 checks passed
@coopernetes coopernetes deleted the docs/user-and-admin-guides branch April 12, 2026 00:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant