Nocobase 2.0 demo file - nocobase_tts_v2_backup_260302 (No Permission Error on Cusomter Center Page)

* Describe the bug

I investigated the “No Permission” issue and discovered that it is caused by the JavaScript logic within the current session.

Specifically, if the user role is not Admin or Root, the system does not have permission to execute the SQL query used to retrieve the customer ID. As a result, the following query fails:
正在上传:image.png…

SELECT COUNT(*) AS total, COUNT(CASE WHEN status = 'processing' THEN 1 END) AS processing_count, COUNT(CASE WHEN status = 'pending' THEN 1 END) AS pending_count, COUNT(CASE WHEN status = 'resolved' THEN 1 END) AS resolved_count FROM nb_tts_tickets

Because of this error:

* Environment

  • NocoBase version: 2.0.9
  • Database type and version: PostgreSQL16
  • OS: Windows
  • Deployment Methods: Create-nocobase-app, Git source code
  • Docker image version:
  • NodeJS version: v22.14

* How To Reproduce

The demo I requested from the official website also exhibits the same issue, which makes it easy to reproduce. By simply logging in with a Customer role and navigating to the Customer Center, the popup error message will appear.

Expected behavior

The expected behavior is that the system correctly displays the ticket counts in each tab, and no popup error messages should appear.

Screenshots

Logs

main2026-03-04 09:43:04 [error] No permissions                               extra={"method":"error-handler","err":"ForbiddenError: No permissions\n    at Object.throw (/home/vv/my-nocobase/node_modules/koa/lib/context.js:97:11)\n    at middlewares.add.tag (/home/vv/my-nocobase/packages/core/acl/lib/acl.js:419:20)\n    at dispatch (/home/vv/my-nocobase/node_modules/koa-compose/index.js:42:32)\n    at parseACL (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-public-forms/dist/server/plugin.js:179:14)\n    at dispatch (/home/vv/my-nocobase/node_modules/koa-compose/index.js:42:32)\n    at checkAssociationOperate (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-acl/dist/server/middlewares/check-association-operate.js:37:12)\n    at dispatch (/home/vv/my-nocobase/node_modules/koa-compose/index.js:42:32)\n    at /home/vv/my-nocobase/packages/plugins/@nocobase/plugin-acl/dist/server/server.js:506:14\n    at dispatch (/home/vv/my-nocobase/node_modules/koa-compose/index.js:42:32)\n    at /home/vv/my-nocobase/packages/core/acl/lib/allow-manager.js:118:13\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at async ACLMiddleware (/home/vv/my-nocobase/packages/core/acl/lib/acl.js:336:14)\n    at async setCurrentRole (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-acl/dist/server/middlewares/setCurrentRole.js:124:3)\n    at async app.resourcer.use.group (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-api-keys/dist/server/plugin.js:62:9)\n    at async /home/vv/my-nocobase/packages/plugins/@nocobase/plugin-users/dist/server/server.js:208:7\n    at async deleteRolesCache (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-users/dist/server/server.js:197:7)\n    at async handleFieldSourceMiddleware (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-data-source-main/dist/server/server.js:463:7)\n    at async mergeReverseFieldWhenSaveCollectionField (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-data-source-main/dist/server/server.js:413:7)\n    at async templateDataMiddleware (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-block-template/dist/server/middlewares/templateData.js:45:3)\n    at async pushUISchemaWhenUpdateCollectionField (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-data-source-main/dist/server/server.js:374:7)\n    at async pushUISchemaWhenUpdateCollectionField (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-data-source-main/dist/server/server.js:355:7)\n    at async appendDataToRolesCheck (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-data-source-manager/dist/server/plugin.js:566:7)"} meta={"err":"ForbiddenError: No permissions\n    at Object.throw (/home/vv/my-nocobase/node_modules/koa/lib/context.js:97:11)\n    at middlewares.add.tag (/home/vv/my-nocobase/packages/core/acl/lib/acl.js:419:20)\n    at dispatch (/home/vv/my-nocobase/node_modules/koa-compose/index.js:42:32)\n    at parseACL (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-public-forms/dist/server/plugin.js:179:14)\n    at dispatch (/home/vv/my-nocobase/node_modules/koa-compose/index.js:42:32)\n    at checkAssociationOperate (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-acl/dist/server/middlewares/check-association-operate.js:37:12)\n    at dispatch (/home/vv/my-nocobase/node_modules/koa-compose/index.js:42:32)\n    at /home/vv/my-nocobase/packages/plugins/@nocobase/plugin-acl/dist/server/server.js:506:14\n    at dispatch (/home/vv/my-nocobase/node_modules/koa-compose/index.js:42:32)\n    at /home/vv/my-nocobase/packages/core/acl/lib/allow-manager.js:118:13\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at async ACLMiddleware (/home/vv/my-nocobase/packages/core/acl/lib/acl.js:336:14)\n    at async setCurrentRole (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-acl/dist/server/middlewares/setCurrentRole.js:124:3)\n    at async app.resourcer.use.group (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-api-keys/dist/server/plugin.js:62:9)\n    at async /home/vv/my-nocobase/packages/plugins/@nocobase/plugin-users/dist/server/server.js:208:7\n    at async deleteRolesCache (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-users/dist/server/server.js:197:7)\n    at async handleFieldSourceMiddleware (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-data-source-main/dist/server/server.js:463:7)\n    at async mergeReverseFieldWhenSaveCollectionField (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-data-source-main/dist/server/server.js:413:7)\n    at async templateDataMiddleware (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-block-template/dist/server/middlewares/templateData.js:45:3)\n    at async pushUISchemaWhenUpdateCollectionField (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-data-source-main/dist/server/server.js:374:7)\n    at async pushUISchemaWhenUpdateCollectionField (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-data-source-main/dist/server/server.js:355:7)\n    at async appendDataToRolesCheck (/home/vv/my-nocobase/packages/plugins/@nocobase/plugin-data-source-manager/dist/server/plugin.js:566:7)"} module=flowSql submodule=save method=error-handler app=main reqId=a6b6ac80-fcf9-4fc9-9dda-629c055c3bbb dataSourceKey=main

Hello!
Thanks for your feedback. It’s a problem with the demo settings; I’ll adjust it.