Roles & access
Who can see and do what, decided by login type, tenant and the farmer's category.
Roles
Roles come from the login response (dataset PlusOneTenantUserData): tenant, user, a map of role id → role code, and work nodes. The role map is cached in KEY_USER_ROLES.
| Role | How the app decides | In plain English |
|---|---|---|
| Cadre | Tenant is ap.gov and the user is not Unit | The default AP field worker. Picks one Village → Habitation → VO and works on that VO's farmers. |
| Unit In-Charge / FMT L1 | Tenant is ap.gov and any role code contains unit-incharge or fmt_l1 | A supervisor. Gets every assigned VO automatically and a home screen for Endorsements, Surveys and Compact Blocks. |
| HAN (add-on) | Any role code contains role.ap.gov.han | Read-only access to the farmer hub and profile. |
| FCCC (add-on) | Any role code contains role.ap.gov.fccc | Can filter Endorsements by habitation/VO (online only). |
Notes:
- Other FMT codes (
fmt_l2,fmt_l3,fmt_dmmt,fmt_mt) and CRP codes (trainee_icrp,han_icrp,l3_icrp) are only farmer designations. They do not change the app. - VO (Village Organisation) is a place in the hierarchy, not a user role.
- Role checks are substring matches on the last cached role list.
Role → feature access
✓ available · ✗ hidden or blocked · ◐ available with limits · – not affected
| Feature | Cadre | Unit / FMT L1 | HAN (add-on) | FCCC (add-on) |
|---|---|---|---|---|
| Village/Habitation/VO selection | ✓ one VO at a time | ✗ all VOs automatic | – | – |
| Data download | Cadre version (11 items) | Unit version (8 items, incl. Compact Block) | – | – |
| Home | Farmer list + Add farmer | VO tabs (Endorsement / Survey / Compact Block), no Add farmer | – | – |
| Analytics | ✓ bottom bar, VO filter | ✓ bottom bar + menu, Cadre → VO → SHG filter | – | – |
| My Plan & Profile | ✓ | ✗ | ◐ read-only items | – |
| Activity Tracker | ✓ | ✗ | – | – |
| Endorsements (menu) | ✗ | ✓ | – | ✓ VO filter |
| Program config / instructions / login history | ✓ | ✓ | – | – |
| Settings → Load more data | ◐ warns if sync queue not empty | ◐ blocked until every queued item has been attempted | – | – |
| Farmer hub: Comments | ✓ | ✗ | ✗ | – |
| Farmer hub: Land, Livestock, Crops, Crop Plan, Crop Actual, Survey, Certification | ✓ by category rules | ✓ by category rules | ✗ disabled | – |
| Farmer profile edit | ✓ | ✓ | ✗ read-only | – |
| Crop Actual line-item edit | ✓ | ◐ only if FMT_CROP_ACTUAL_EDIT_SWITCH ≠ 0 | – | – |
| 12-hourly analytics worker | ✓ | ✗ | – | – |
Farmer category matrix (farmer hub, ap.gov)
The category is the text after the last / in the farmer's categoryName. A farmer "has a category" only if it is C4, C5 or Farmer (or రైతు). "Auth" = land must be authenticated (or the farmer has no land assets). "Synced" = farmer must already exist on the server.
| Tile | No category | Farmer (C1–C3) | C4 | C5 |
|---|---|---|---|---|
| Land / Crops / Crop Plan / Certification | ✗ | ✓ | ✗ | ✗ |
| Crop Actual | ✗ | ✓ Auth | ✗ | ✗ |
| ATM | ✗ | ✓ Auth | ✗ | ✓ |
| KAP 25–26 | ✗ | ✓ Auth, synced | ✗ | ✓ synced |
| Annual plan | ✗ | ✓ Auth, synced | ✓ synced | ✓ synced |
| Livestock | ✗ | ✓ | ✓ | ✓ |
| Comments | ✗ | ✓ | ✗ | ✓ |
| Surveys | ✗ | ✓ | ✓ | ✓ |
| Kitchen Garden | ✓ | ✓ | ✓ | ✓ |
Gates that apply before the table:
- Inactive farmer → every tile disabled.
- Profile incomplete → only Profile opens.
- Profile complete, no land, not C4/C5 → only Profile and Land open.
- HAN role → Land, Livestock, Comments, Crops, Crop Plan, Survey, Crop Actual, Certification disabled.
- Server switches can hide or block tiles (
CROP_PLAN_EXTERNAL_SWITCH,SURVEYS_ACTION_PLAN_EXTERNAL_SWITCH,SURVEYS_MONTHLY_PROGRESS_EXTERNAL_SWITCH,CERTIFICATION_EXTERNAL_SWITCH,LAND_EXTERNAL_SWITCH,PROFILE_EXTERNAL_SWITCH,ATM_EXTERNAL_SWITCH,KAP_25_26_EXTERNAL_SWITCH,CROP_ACTUAL_EXCEPTION_EXTERNAL_SWITCH). Value"1"= on.