diff --git a/application/src/main/data/json/system/oauth2_config_templates/facebook_config.json b/application/src/main/data/json/system/oauth2_config_templates/facebook_config.json
index 9b059e81c1..3961bf3688 100644
--- a/application/src/main/data/json/system/oauth2_config_templates/facebook_config.json
+++ b/application/src/main/data/json/system/oauth2_config_templates/facebook_config.json
@@ -7,11 +7,14 @@
"userInfoUri": "https://graph.facebook.com/me?fields=id,name,first_name,last_name,email",
"clientAuthenticationMethod": "BASIC",
"userNameAttributeName": "email",
- "basic": {
- "emailAttributeKey": "email",
- "firstNameAttributeKey": "first_name",
- "lastNameAttributeKey": "last_name",
- "tenantNameStrategy": "DOMAIN"
+ "mapperConfig": {
+ "type": "BASIC",
+ "basic": {
+ "emailAttributeKey": "email",
+ "firstNameAttributeKey": "first_name",
+ "lastNameAttributeKey": "last_name",
+ "tenantNameStrategy": "DOMAIN"
+ }
},
"comment": null,
"loginButtonIcon": "mdi:facebook",
diff --git a/application/src/main/data/json/system/oauth2_config_templates/github_config.json b/application/src/main/data/json/system/oauth2_config_templates/github_config.json
index 6c3a51723f..6569162ead 100644
--- a/application/src/main/data/json/system/oauth2_config_templates/github_config.json
+++ b/application/src/main/data/json/system/oauth2_config_templates/github_config.json
@@ -7,8 +7,11 @@
"userInfoUri": "https://api.github.com/user",
"clientAuthenticationMethod": "BASIC",
"userNameAttributeName": "login",
- "basic": {
- "tenantNameStrategy": "DOMAIN"
+ "mapperConfig": {
+ "type": "GITHUB",
+ "basic": {
+ "tenantNameStrategy": "DOMAIN"
+ }
},
"comment": "In order to log into ThingsBoard you need to have user's email. You may configure and use Custom OAuth2 Mapper to get email information. Please refer to Github Documentation",
"loginButtonIcon": "mdi:github",
diff --git a/application/src/main/data/json/system/oauth2_config_templates/google_config.json b/application/src/main/data/json/system/oauth2_config_templates/google_config.json
index 2756bcc957..03e3046125 100644
--- a/application/src/main/data/json/system/oauth2_config_templates/google_config.json
+++ b/application/src/main/data/json/system/oauth2_config_templates/google_config.json
@@ -8,11 +8,14 @@
"userInfoUri": "https://openidconnect.googleapis.com/v1/userinfo",
"clientAuthenticationMethod": "BASIC",
"userNameAttributeName": "email",
- "basic": {
- "emailAttributeKey": "email",
- "firstNameAttributeKey": "given_name",
- "lastNameAttributeKey": "family_name",
- "tenantNameStrategy": "DOMAIN"
+ "mapperConfig": {
+ "type": "BASIC",
+ "basic": {
+ "emailAttributeKey": "email",
+ "firstNameAttributeKey": "given_name",
+ "lastNameAttributeKey": "family_name",
+ "tenantNameStrategy": "DOMAIN"
+ }
},
"comment": null,
"loginButtonIcon": "mdi:google",
diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientRegistrationTemplate.java b/common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientRegistrationTemplate.java
index 897472f154..30c6e1c4a9 100644
--- a/common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientRegistrationTemplate.java
+++ b/common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientRegistrationTemplate.java
@@ -34,8 +34,7 @@ import java.util.List;
public class OAuth2ClientRegistrationTemplate extends SearchTextBasedWithAdditionalInfo implements HasName {
private String providerId;
- private MapperType mapperType;
- private OAuth2BasicMapperConfig basic;
+ private OAuth2MapperConfig mapperConfig;
private String authorizationUri;
private String accessTokenUri;
private List scope;
@@ -51,8 +50,7 @@ public class OAuth2ClientRegistrationTemplate extends SearchTextBasedWithAdditio
public OAuth2ClientRegistrationTemplate(OAuth2ClientRegistrationTemplate clientRegistrationTemplate) {
super(clientRegistrationTemplate);
this.providerId = clientRegistrationTemplate.providerId;
- this.mapperType = clientRegistrationTemplate.mapperType;
- this.basic = clientRegistrationTemplate.basic;
+ this.mapperConfig = clientRegistrationTemplate.mapperConfig;
this.authorizationUri = clientRegistrationTemplate.authorizationUri;
this.accessTokenUri = clientRegistrationTemplate.accessTokenUri;
this.scope = clientRegistrationTemplate.scope;
diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/OAuth2ClientRegistrationTemplateEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/OAuth2ClientRegistrationTemplateEntity.java
index e7973dcd5d..d4fb6bfebe 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/OAuth2ClientRegistrationTemplateEntity.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/model/sql/OAuth2ClientRegistrationTemplateEntity.java
@@ -109,17 +109,20 @@ public class OAuth2ClientRegistrationTemplateEntity extends BaseSqlEntity