Foo Developer created FINERACT-2762:
---------------------------------------

             Summary: Client Approval/Activation Fails for Branch Manager 
Despite Having Required Permissions
                 Key: FINERACT-2762
                 URL: https://issues.apache.org/jira/browse/FINERACT-2762
             Project: Apache Fineract
          Issue Type: Bug
            Reporter: Foo Developer
            Assignee: Foo Developer


# Allow Checker-Only Users to Approve Pending Maker-Checker Actions via Direct 
Entity Endpoint

## Description

For a **maker-checker-enabled action**, a user who has only the corresponding 
**`_CHECKER` permission** (for example, `ACTIVATE_CLIENT_CHECKER`) and does not 
have the base permission (`ACTIVATE_CLIENT`) is currently rejected when calling 
the entity's normal action endpoint.

This occurs even when there is already a **pending maker submission** for the 
exact action, entity, and resource that is awaiting the user's approval.

Currently, a checker-only user can approve the pending action only through the 
dedicated **Maker-Checker / Checker Inbox approval endpoint**:

`POST .../commands/{id}?command=approve`

There is no fallback for a checker-only user who performs the action directly 
from the entity's screen using the normal action endpoint, such as:

`POST /clients/{clientId}?command=activate`

## Steps to Reproduce

1. As a **Maker** with `CREATE_CLIENT` / base permission and without the 
checker permission:

   * Create a client.
   * Submit the client for approval.

2. As a **Checker** with only `ACTIVATE_CLIENT_CHECKER` and without 
`ACTIVATE_CLIENT`:

   * Open the client.
   * Call the direct activation endpoint:
     `POST /clients/{clientId}?command=activate`

3. Observe that the request is rejected and rolled back, even though a matching 
pending maker-checker entry exists for the exact action, entity, and resource.

## Actual Result

The checker-only user receives a generic **"not authorized"** / rollback 
response.

The request is rejected because the user does not have the base 
`ACTIVATE_CLIENT` permission, despite having the corresponding 
`ACTIVATE_CLIENT_CHECKER` permission and an existing pending submission 
awaiting approval.

## Expected Behavior

When a checker-only user calls the **direct action endpoint**, and a pending 
maker submission exists for the exact:

* Action
* Entity
* Resource

the platform should recognize the request as an **approval of the pending 
maker-checker entry** and process it equivalently to the dedicated Checker 
Inbox approval endpoint:

`POST .../commands/{id}?command=approve`

The checker should therefore be able to approve the pending action directly 
from the entity's screen without requiring the base permission.

### Authorization Rule

* **Checker-only + matching pending entry exists** → Treat the request as 
approval and allow it.
* **Checker-only + no matching pending entry exists** → Keep the existing 
**"not authorized"** behavior.
* **User has base permission** → Keep the existing normal action behavior 
unchanged.

This should provide a consistent experience between approving an action from 
the **Checker Inbox** and approving it directly from the **entity screen**.




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to