LibreSign / LibreSign/libresign

Add signature rejection policy configuration UI

Open
#8,160 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature-request frontend good first issue javascript
Dominant language
PHP
Stars
818
Forks
146
Avg merge
11h 31m
Merged PRs (30d)
326

Description

Add the Policy Workbench UI for the signature_rejection policy defined by #7832 and implemented in the backend by #8159.

Scope

Expose the signature rejection policy in the existing Policies & Rules interface.

Administrators must be able to configure:

  • whether requesters are allowed to enable rejection for their signature requests;

  • rejection comment mode:

    • disabled;
    • optional;
    • required;
  • whether rejection cancels the remaining signing workflow;

  • whether rejection status may be publicly visible;

  • whether a non-private rejection comment may be shown on the validation page.

The enabled value means that the requester is allowed to offer rejection.

It must not be presented as automatically enabling rejection for all signature requests.

Comment privacy

Comment privacy is not an administrator policy option.

When comments are enabled, the signer can always choose to make their own rejection comment private.

The Policy Workbench must not add an option such as allow_private_comment.

Policy behavior

The UI must follow the existing Policies & Rules patterns for:

  • system scope;
  • group scope;
  • user scope;
  • inheritance;
  • delegation;
  • child overrides;
  • non-editable inherited values.

The backend is the source of truth for policy validation.

Do not duplicate backend validation rules in the frontend.

When a parent policy requires rejection comments, a delegated child rule must not allow the administrator to weaken this requirement.

The UI should use the policy metadata and validation behavior already provided by the Policies & Rules backend instead of creating rejection-specific permission logic.

Tests

Add or update frontend tests covering at least:

  • rendering the rejection policy;
  • loading existing values;
  • saving changed values;
  • enabled and disabled states;
  • disabled comment mode;
  • optional comment mode;
  • required comment mode;
  • cancel_workflow;
  • public_status;
  • show_comment_on_validation;
  • dependent options;
  • system scope;
  • group scope;
  • user scope;
  • inherited values;
  • non-editable values;
  • delegated policy behavior;
  • a delegated rule not being able to weaken a required rejection comment.

Follow the existing Policy Workbench frontend test patterns.

Quality gates

The implementation must pass the existing frontend checks, including:

  • ESLint;
  • type checking;
  • frontend tests.

Out of scope

This issue does not implement:

  • backend rejection behavior;
  • requester configuration in the request-signature flow;
  • signer rejection UI;
  • validation page rendering.

These are handled by #8159, #8161, and #8162.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the existing Policies & Rules interface and its frontend test patterns, then review the policy metadata and validation behavior provided by the backend. Add the signature_rejection settings across system, group, and user scopes while preserving inheritance, delegation, dependent options, and non-editable values. Done means the listed rendering, loading, saving, and behavior tests pass alongside ESLint, type checking, and frontend tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
frontend, testing
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.