From b58d82b69f170a7c5e405411550c437f5478e93f Mon Sep 17 00:00:00 2001 From: Alexander Schulz Date: Wed, 23 Sep 2026 17:19:39 +0200 Subject: [PATCH] Add role mapping --- Template/config/integration.php | 5 +++++ User/GenericOAuth2UserProvider.php | 20 +++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/Template/config/integration.php b/Template/config/integration.php index d21a90c..3733c46 100644 --- a/Template/config/integration.php +++ b/Template/config/integration.php @@ -56,6 +56,11 @@ form->text('oauth2_custom_group', $values) ?>

+ form->label(t('Role Key'), 'oauth2_key_role') ?> + form->text('oauth2_key_role', $values) ?> +

+

+ form->label(t('Custom Login Text'), 'oauth2_custom_login_text') ?> form->text('oauth2_custom_login_text', $values) ?>

diff --git a/User/GenericOAuth2UserProvider.php b/User/GenericOAuth2UserProvider.php index 7e501fa..20bbc07 100644 --- a/User/GenericOAuth2UserProvider.php +++ b/User/GenericOAuth2UserProvider.php @@ -4,6 +4,7 @@ use Kanboard\Core\Base; use Kanboard\Core\User\UserProviderInterface; +use Kanboard\Core\Security\Role; use Pimple\Container; /** @@ -121,7 +122,24 @@ public function getExternalId() */ public function getRole() { - return ''; + if (empty($this->configModel->get('oauth2_key_role'))) { + return ''; + } + + $userRoles = $this->getKey('oauth2_key_role'); + + if (is_string($userRoles)) { + $userRoles = explode(',', $userRoles); + } + $userRoles = array_map('trim', $userRoles); + + if (in_array(Role::APP_ADMIN, $userRoles)) { + return Role::APP_ADMIN; + } elseif (in_array(Role::APP_MANAGER, $userRoles)) { + return Role::APP_MANAGER; + } + + return Role::APP_USER; } /**