peertube-plugin-auth-openid-connect: Validation error: "NaN" is not a valid role.
Hi everyone,
thanks for this great software and the amazing plug-ins available!
We are experiencing an issue in setting up OpenId Connect with a Gitlab instance.
The setup apparently works - we see the openid button in the login page, the user is correctly redirected to the gitlab instance - until the user is redirected back to the peertube instance. At this point, we get: Validation error: "NaN" is not a valid role.
Checking the logs we have:
warn[26/2/2021, 12:34:56] Login error.
{
"err": {
"statusCode": 503,
"status": 503,
"code": 503,
"message": "Validation error: \"NaN\" is not a valid role.",
"name": "server_error",
"inner": {
"stack": "SequelizeValidationError: Validation error: \"NaN\" is not a valid role.\n at InstanceValidator._validate (/app/node_modules/sequelize/lib/instance-validator.js:78:13)\n at process._tickCallback (internal/process/next_tick.js:68:7)",
"message": "Validation error: \"NaN\" is not a valid role.",
"name": "SequelizeValidationError",
"errors": [
{
"message": "\"NaN\" is not a valid role.",
"type": "Validation error",
"path": "role",
"value": null,
"origin": "FUNCTION",
"instance": {
"emailVerified": null,
"webTorrentEnabled": true,
"videosHistoryEnabled": true,
"autoPlayNextVideo": false,
"autoPlayNextVideoPlaylist": true,
"videoLanguages": null,
"blocked": false,
"blockedReason": null,
"theme": "instance-default",
"noInstanceConfigWarningModal": false,
"noWelcomeModal": false,
"feedToken": "ANONYMISED",
"lastLoginDate": null,
"id": null,
"username": "ANONYMISED",
"password": null,
"email": "ANONYMISED@ANONYMISED.org",
"nsfwPolicy": "do_not_list",
"autoPlayVideo": true,
"role": null,
"videoQuota": 0,
"videoQuotaDaily": 0,
"adminFlags": 0,
"pluginAuth": "peertube-plugin-auth-openid-connect",
"updatedAt": "2021-02-26T11:34:56.925Z",
"createdAt": "2021-02-26T11:34:56.925Z"
},
"validatorKey": "isUserRole",
"validatorName": null,
"validatorArgs": [],
"original": {
"stack": "Error: \"NaN\" is not a valid role.\n at Object.throwIfNotValid (/app/dist/server/models/utils.js:92:15)\n at UserModel.tslib_1.__decorate.sequelize_typescript_1.Is.value (/app/dist/server/models/account/user.js:598:60)\n at InstanceValidator._invokeCustomValidator (/app/node_modules/sequelize/lib/instance-validator.js:277:30)\n at _.forIn (/app/node_modules/sequelize/lib/instance-validator.js:213:30)\n at /app/node_modules/lodash/lodash.js:4925:15\n at Function.forIn (/app/node_modules/lodash/lodash.js:12976:11)\n at InstanceValidator._singleAttrValidate (/app/node_modules/sequelize/lib/instance-validator.js:198:7)\n at _.forIn (/app/node_modules/sequelize/lib/instance-validator.js:148:30)\n at /app/node_modules/lodash/lodash.js:4925:15\n at Function.forIn (/app/node_modules/lodash/lodash.js:12976:11)\n at InstanceValidator._perAttributeValidators (/app/node_modules/sequelize/lib/instance-validator.js:131:7)\n at InstanceValidator._validate (/app/node_modules/sequelize/lib/instance-validator.js:73:12)\n at InstanceValidator._validateAndRunHooks (/app/node_modules/sequelize/lib/instance-validator.js:111:18)\n at process._tickCallback (internal/process/next_tick.js:68:7)",
"message": "\"NaN\" is not a valid role."
}
}
]
},
"stack": "server_error: Validation error: \"NaN\" is not a valid role.\n at new ServerError (/app/node_modules/oauth2-server/lib/errors/server-error.js:25:14)\n at TokenHandler.<anonymous> (/app/node_modules/oauth2-server/lib/handlers/token-handler.js:105:13)\n at TokenHandler.tryCatcher (/app/node_modules/bluebird/js/release/util.js:16:23)\n at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:547:31)\n at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:604:18)\n at Promise._settlePromise0 (/app/node_modules/bluebird/js/release/promise.js:649:10)\n at Promise._settlePromises (/app/node_modules/bluebird/js/release/promise.js:725:18)\n at _drainQueueStep (/app/node_modules/bluebird/js/release/async.js:93:12)\n at _drainQueue (/app/node_modules/bluebird/js/release/async.js:86:9)\n at Async._drainQueues (/app/node_modules/bluebird/js/release/async.js:102:5)\n at Immediate.Async.drainQueues [as _onImmediate] (/app/node_modules/bluebird/js/release/async.js:15:14)\n at runCallback (timers.js:705:18)\n at tryOnImmediate (timers.js:676:5)\n at processImmediate (timers.js:658:5)"
}
}
You can see that the parameter role
is set to null
but we configured the plug-in "Role property" (the first time to 1
the second to 2
).
Any help would be greatly appreciated.
Thanks!