[GH-ISSUE #2517] Unknown function: ontains() when using PocketId as authentication provider #38974

Closed
opened 2026-06-22 02:37:26 -05:00 by GiteaMirror · 3 comments
Owner

Originally created by @svillar on GitHub (Feb 22, 2026).
Original GitHub issue: https://github.com/fosrl/pangolin/issues/2517

Describe the Bug

Trying to login in Pangolin using PocketId as auth provider. PocketId is properly configured as I'm already using it to authenticate 3 other web apps.

When logging into Pangolin I get the following error in pangolin logs

pangolin  | Making OIDC callback validation request to: http://localhost:3000/api/v1/auth/idp/5/oidc/validate-callback
pangolin  | 2026-02-22T21:17:43+00:00 [error]: Unknown function: ontains()
pangolin  | Stack: Error: Unknown function: ontains()
pangolin  |     at Runtime.callFunction (/app/node_modules/jmespath/jmespath.js:1212:17)
pangolin  |     at TreeInterpreter.visit (/app/node_modules/jmespath/jmespath.js:1068:35)
pangolin  |     at TreeInterpreter.visit (/app/node_modules/jmespath/jmespath.js:1047:28)
pangolin  |     at TreeInterpreter.visit (/app/node_modules/jmespath/jmespath.js:1041:30)
pangolin  |     at TreeInterpreter.search (/app/node_modules/jmespath/jmespath.js:866:23)
pangolin  |     at Object.search (/app/node_modules/jmespath/jmespath.js:1665:26)
pangolin  |     at validateOidcCallback (file:///app/dist/server.mjs:33001:37)
pangolin  |     at process.processTicksAndRejections (node:internal/process/task_queues:103:5)

Most likely there is a ontains() call instead of a contains() one

Environment

  • OS Type & Version: Debian testing
  • Pangolin Version: 1.15.4
  • Gerbil Version:
  • Traefik Version:
  • Newt Version: 1.9.1
  • Olm Version: (if applicable)

To Reproduce

Log in using PocketId

Expected Behavior

Login should succeed :)

Originally created by @svillar on GitHub (Feb 22, 2026). Original GitHub issue: https://github.com/fosrl/pangolin/issues/2517 ### Describe the Bug Trying to login in Pangolin using PocketId as auth provider. PocketId is properly configured as I'm already using it to authenticate 3 other web apps. When logging into Pangolin I get the following error in pangolin logs ``` pangolin | Making OIDC callback validation request to: http://localhost:3000/api/v1/auth/idp/5/oidc/validate-callback pangolin | 2026-02-22T21:17:43+00:00 [error]: Unknown function: ontains() pangolin | Stack: Error: Unknown function: ontains() pangolin | at Runtime.callFunction (/app/node_modules/jmespath/jmespath.js:1212:17) pangolin | at TreeInterpreter.visit (/app/node_modules/jmespath/jmespath.js:1068:35) pangolin | at TreeInterpreter.visit (/app/node_modules/jmespath/jmespath.js:1047:28) pangolin | at TreeInterpreter.visit (/app/node_modules/jmespath/jmespath.js:1041:30) pangolin | at TreeInterpreter.search (/app/node_modules/jmespath/jmespath.js:866:23) pangolin | at Object.search (/app/node_modules/jmespath/jmespath.js:1665:26) pangolin | at validateOidcCallback (file:///app/dist/server.mjs:33001:37) pangolin | at process.processTicksAndRejections (node:internal/process/task_queues:103:5) ``` Most likely there is a `ontains()` call instead of a `contains()` one ### Environment - OS Type & Version: Debian testing - Pangolin Version: 1.15.4 - Gerbil Version: - Traefik Version: - Newt Version: 1.9.1 - Olm Version: (if applicable) ### To Reproduce Log in using PocketId ### Expected Behavior Login should succeed :)
Author
Owner

@LaurenceJJones commented on GitHub (Feb 25, 2026):

This error triggered because the string that was passed into JMESpath was ontains() instead of the contains() function which is a user configured option from the auto provision section. Maybe when you were trying to setup the auto provision feature of pangolin you copied the example from the docs and missed the c character?

https://docs.pangolin.net/manage/identity-providers/auto-provisioning#example-1-group-based-selection

However, when saving the fields pangolin should at least do a sanity check that the expression function you want to use can compile before leading to a runtime failure.

<!-- gh-comment-id:3960341601 --> @LaurenceJJones commented on GitHub (Feb 25, 2026): This error triggered because the string that was passed into JMESpath was `ontains()` instead of the `contains()` function which is a user configured option from the auto provision section. Maybe when you were trying to setup the auto provision feature of pangolin you copied the example from the docs and missed the `c` character? https://docs.pangolin.net/manage/identity-providers/auto-provisioning#example-1-group-based-selection However, when saving the fields pangolin should at least do a sanity check that the expression function you want to use can compile before leading to a runtime failure.
Author
Owner

@oschwartz10612 commented on GitHub (Feb 25, 2026):

Thanks @LaurenceJJones thats probably it!

Will make sure we have a task to check the input better.

<!-- gh-comment-id:3961561707 --> @oschwartz10612 commented on GitHub (Feb 25, 2026): Thanks @LaurenceJJones thats probably it! Will make sure we have a task to check the input better.
Author
Owner

@svillar commented on GitHub (Feb 27, 2026):

This error triggered because the string that was passed into JMESpath was ontains() instead of the contains() function which is a user configured option from the auto provision section. Maybe when you were trying to setup the auto provision feature of pangolin you copied the example from the docs and missed the c character?

https://docs.pangolin.net/manage/identity-providers/auto-provisioning#example-1-group-based-selection

However, when saving the fields pangolin should at least do a sanity check that the expression function you want to use can compile before leading to a runtime failure.

Stupid me 🤦 that was it indeed. Thanks!

<!-- gh-comment-id:3971844002 --> @svillar commented on GitHub (Feb 27, 2026): > This error triggered because the string that was passed into JMESpath was `ontains()` instead of the `contains()` function which is a user configured option from the auto provision section. Maybe when you were trying to setup the auto provision feature of pangolin you copied the example from the docs and missed the `c` character? > > https://docs.pangolin.net/manage/identity-providers/auto-provisioning#example-1-group-based-selection > > However, when saving the fields pangolin should at least do a sanity check that the expression function you want to use can compile before leading to a runtime failure. Stupid me 🤦 that was it indeed. Thanks!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/pangolin#38974