From 08319babb5b8118fb037cb9df5c4471f326812e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Darm=C3=BCntzel?= Date: Wed, 30 Mar 2022 15:51:19 +0200 Subject: [PATCH 1/2] saml: parses role of user as int. In case the idp sends the role as a string it will be parsed as an int to prevent errors. --- peertube-plugin-auth-saml2/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/peertube-plugin-auth-saml2/main.js b/peertube-plugin-auth-saml2/main.js index d7b2072..cca4120 100644 --- a/peertube-plugin-auth-saml2/main.js +++ b/peertube-plugin-auth-saml2/main.js @@ -332,6 +332,6 @@ async function buildUser (settingsManager, samlUser) { username, email: findInUser(samlUser, settings['mail-property']), displayName: findInUser(samlUser, settings['display-name-property']), - role: findInUser(samlUser, settings['role-property']) + role: parseInt(findInUser(samlUser, settings['role-property'])) } } -- GitLab From cabbd9495ba3de7c2cc9b96b5d0493dd6074910d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Darm=C3=BCntzel?= Date: Tue, 19 Apr 2022 16:22:41 +0200 Subject: [PATCH 2/2] If SAML doesn't provide a role, send undefined to peertube. --- peertube-plugin-auth-saml2/main.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/peertube-plugin-auth-saml2/main.js b/peertube-plugin-auth-saml2/main.js index cca4120..1e83edd 100644 --- a/peertube-plugin-auth-saml2/main.js +++ b/peertube-plugin-auth-saml2/main.js @@ -328,10 +328,16 @@ async function buildUser (settingsManager, samlUser) { let username = findInUser(samlUser, settings['username-property']) || '' username = username.replace(/[^a-z0-9._]/g, '_') + let sent_role = findInUser(samlUser, settings['role-property']) + let parsed_role = parseInt(sent_role, 10) + if (!Number.isSafeInteger(parsed_role)) { + parsed_role = undefined + } + return { username, email: findInUser(samlUser, settings['mail-property']), displayName: findInUser(samlUser, settings['display-name-property']), - role: parseInt(findInUser(samlUser, settings['role-property'])) + role: parsed_role } } -- GitLab