Browse Source

Added 'additionalInfo' to ClientRegistration

pull/3557/head
vzikratyi 6 years ago
parent
commit
5275a3302a
  1. 1
      common/data/src/main/java/org/thingsboard/server/common/data/SearchTextBasedWithAdditionalInfo.java
  2. 2
      common/data/src/main/java/org/thingsboard/server/common/data/oauth2/ClientRegistrationDto.java
  3. 14
      common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientRegistration.java
  4. 32
      common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientRegistrationTemplate.java
  5. 1
      dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java
  6. 8
      dao/src/main/java/org/thingsboard/server/dao/model/sql/OAuth2ClientRegistrationEntity.java
  7. 2
      dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Utils.java
  8. 1
      dao/src/test/java/org/thingsboard/server/dao/service/BaseOAuth2ConfigTemplateServiceTest.java
  9. 1
      dao/src/test/java/org/thingsboard/server/dao/service/BaseOAuth2ServiceTest.java

1
common/data/src/main/java/org/thingsboard/server/common/data/SearchTextBasedWithAdditionalInfo.java

@ -59,6 +59,7 @@ public abstract class SearchTextBasedWithAdditionalInfo<I extends UUIDBased> ext
} }
public void setAdditionalInfo(JsonNode addInfo) { public void setAdditionalInfo(JsonNode addInfo) {
// TODO why set additionalInfoBytes to [110,117,108,108] if JsonNode is null
setJson(addInfo, json -> this.additionalInfo = json, bytes -> this.additionalInfoBytes = bytes); setJson(addInfo, json -> this.additionalInfo = json, bytes -> this.additionalInfoBytes = bytes);
} }

2
common/data/src/main/java/org/thingsboard/server/common/data/oauth2/ClientRegistrationDto.java

@ -16,6 +16,7 @@
package org.thingsboard.server.common.data.oauth2; package org.thingsboard.server.common.data.oauth2;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.*; import lombok.*;
import org.thingsboard.server.common.data.id.OAuth2ClientRegistrationId; import org.thingsboard.server.common.data.id.OAuth2ClientRegistrationId;
import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.TenantId;
@ -43,4 +44,5 @@ public class ClientRegistrationDto {
private String clientAuthenticationMethod; private String clientAuthenticationMethod;
private String loginButtonLabel; private String loginButtonLabel;
private String loginButtonIcon; private String loginButtonIcon;
private JsonNode additionalInfo;
} }

14
common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientRegistration.java

@ -16,10 +16,13 @@
package org.thingsboard.server.common.data.oauth2; package org.thingsboard.server.common.data.oauth2;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*; import lombok.Data;
import org.thingsboard.server.common.data.BaseData; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.thingsboard.server.common.data.HasName; import org.thingsboard.server.common.data.HasName;
import org.thingsboard.server.common.data.HasTenantId; import org.thingsboard.server.common.data.HasTenantId;
import org.thingsboard.server.common.data.SearchTextBasedWithAdditionalInfo;
import org.thingsboard.server.common.data.id.OAuth2ClientRegistrationId; import org.thingsboard.server.common.data.id.OAuth2ClientRegistrationId;
import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.TenantId;
@ -29,7 +32,7 @@ import java.util.List;
@Data @Data
@ToString(exclude = {"clientSecret"}) @ToString(exclude = {"clientSecret"})
@NoArgsConstructor @NoArgsConstructor
public class OAuth2ClientRegistration extends BaseData<OAuth2ClientRegistrationId> implements HasTenantId, HasName { public class OAuth2ClientRegistration extends SearchTextBasedWithAdditionalInfo<OAuth2ClientRegistrationId> implements HasTenantId, HasName {
private TenantId tenantId; private TenantId tenantId;
private String domainName; private String domainName;
@ -71,4 +74,9 @@ public class OAuth2ClientRegistration extends BaseData<OAuth2ClientRegistrationI
public String getName() { public String getName() {
return loginButtonLabel; return loginButtonLabel;
} }
@Override
public String getSearchText() {
return getName();
}
} }

32
common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientRegistrationTemplate.java

@ -15,10 +15,10 @@
*/ */
package org.thingsboard.server.common.data.oauth2; package org.thingsboard.server.common.data.oauth2;
import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data;
import com.fasterxml.jackson.databind.JsonNode; import lombok.EqualsAndHashCode;
import lombok.*; import lombok.NoArgsConstructor;
import org.thingsboard.server.common.data.BaseData; import lombok.ToString;
import org.thingsboard.server.common.data.HasName; import org.thingsboard.server.common.data.HasName;
import org.thingsboard.server.common.data.HasTenantId; import org.thingsboard.server.common.data.HasTenantId;
import org.thingsboard.server.common.data.SearchTextBasedWithAdditionalInfo; import org.thingsboard.server.common.data.SearchTextBasedWithAdditionalInfo;
@ -31,7 +31,7 @@ import java.util.List;
@Data @Data
@ToString @ToString
@NoArgsConstructor @NoArgsConstructor
public class OAuth2ClientRegistrationTemplate extends BaseData<OAuth2ClientRegistrationTemplateId> implements HasTenantId, HasName { public class OAuth2ClientRegistrationTemplate extends SearchTextBasedWithAdditionalInfo<OAuth2ClientRegistrationTemplateId> implements HasTenantId, HasName {
private TenantId tenantId; private TenantId tenantId;
private String providerId; private String providerId;
@ -48,14 +48,6 @@ public class OAuth2ClientRegistrationTemplate extends BaseData<OAuth2ClientRegis
private String loginButtonLabel; private String loginButtonLabel;
private String helpLink; private String helpLink;
@Getter(AccessLevel.NONE)
@Setter(AccessLevel.NONE)
private transient JsonNode additionalInfo;
@Getter(AccessLevel.NONE)
@Setter(AccessLevel.NONE)
@JsonIgnore
private byte[] additionalInfoBytes;
public OAuth2ClientRegistrationTemplate(OAuth2ClientRegistrationTemplate clientRegistrationTemplate) { public OAuth2ClientRegistrationTemplate(OAuth2ClientRegistrationTemplate clientRegistrationTemplate) {
super(clientRegistrationTemplate); super(clientRegistrationTemplate);
this.tenantId = clientRegistrationTemplate.tenantId; this.tenantId = clientRegistrationTemplate.tenantId;
@ -72,19 +64,15 @@ public class OAuth2ClientRegistrationTemplate extends BaseData<OAuth2ClientRegis
this.loginButtonIcon = clientRegistrationTemplate.loginButtonIcon; this.loginButtonIcon = clientRegistrationTemplate.loginButtonIcon;
this.loginButtonLabel = clientRegistrationTemplate.loginButtonLabel; this.loginButtonLabel = clientRegistrationTemplate.loginButtonLabel;
this.helpLink = clientRegistrationTemplate.helpLink; this.helpLink = clientRegistrationTemplate.helpLink;
this.additionalInfo = clientRegistrationTemplate.additionalInfo;
}
public JsonNode getAdditionalInfo() {
return SearchTextBasedWithAdditionalInfo.getJson(() -> additionalInfo, () -> additionalInfoBytes);
}
public void setAdditionalInfo(JsonNode addInfo) {
SearchTextBasedWithAdditionalInfo.setJson(addInfo, json -> this.additionalInfo = json, bytes -> this.additionalInfoBytes = bytes);
} }
@Override @Override
public String getName() { public String getName() {
return providerId; return providerId;
} }
@Override
public String getSearchText() {
return getName();
}
} }

1
dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java

@ -390,6 +390,7 @@ public class ModelConstants {
public static final String OAUTH2_MAPPER_PASSWORD_PROPERTY = "custom_password"; public static final String OAUTH2_MAPPER_PASSWORD_PROPERTY = "custom_password";
public static final String OAUTH2_MAPPER_SEND_TOKEN_PROPERTY = "custom_send_token"; public static final String OAUTH2_MAPPER_SEND_TOKEN_PROPERTY = "custom_send_token";
public static final String OAUTH2_TEMPLATE_COMMENT_PROPERTY = "comment"; public static final String OAUTH2_TEMPLATE_COMMENT_PROPERTY = "comment";
public static final String OAUTH2_ADDITIONAL_INFO_PROPERTY = ADDITIONAL_INFO_PROPERTY;
public static final String OAUTH2_TEMPLATE_ADDITIONAL_INFO_PROPERTY = ADDITIONAL_INFO_PROPERTY; public static final String OAUTH2_TEMPLATE_ADDITIONAL_INFO_PROPERTY = ADDITIONAL_INFO_PROPERTY;
public static final String OAUTH2_TEMPLATE_LOGIN_BUTTON_ICON_PROPERTY = OAUTH2_LOGIN_BUTTON_ICON_PROPERTY; public static final String OAUTH2_TEMPLATE_LOGIN_BUTTON_ICON_PROPERTY = OAUTH2_LOGIN_BUTTON_ICON_PROPERTY;
public static final String OAUTH2_TEMPLATE_LOGIN_BUTTON_LABEL_PROPERTY = OAUTH2_LOGIN_BUTTON_LABEL_PROPERTY; public static final String OAUTH2_TEMPLATE_LOGIN_BUTTON_LABEL_PROPERTY = OAUTH2_LOGIN_BUTTON_LABEL_PROPERTY;

8
dao/src/main/java/org/thingsboard/server/dao/model/sql/OAuth2ClientRegistrationEntity.java

@ -15,8 +15,10 @@
*/ */
package org.thingsboard.server.dao.model.sql; package org.thingsboard.server.dao.model.sql;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef; import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.id.OAuth2ClientRegistrationId; import org.thingsboard.server.common.data.id.OAuth2ClientRegistrationId;
import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.TenantId;
@ -98,6 +100,10 @@ public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRe
@Column(name = ModelConstants.OAUTH2_MAPPER_SEND_TOKEN_PROPERTY) @Column(name = ModelConstants.OAUTH2_MAPPER_SEND_TOKEN_PROPERTY)
private Boolean sendToken; private Boolean sendToken;
@Type(type = "json")
@Column(name = ModelConstants.OAUTH2_ADDITIONAL_INFO_PROPERTY)
private JsonNode additionalInfo;
public OAuth2ClientRegistrationEntity() { public OAuth2ClientRegistrationEntity() {
super(); super();
} }
@ -123,6 +129,7 @@ public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRe
this.clientAuthenticationMethod = clientRegistration.getClientAuthenticationMethod(); this.clientAuthenticationMethod = clientRegistration.getClientAuthenticationMethod();
this.loginButtonLabel = clientRegistration.getLoginButtonLabel(); this.loginButtonLabel = clientRegistration.getLoginButtonLabel();
this.loginButtonIcon = clientRegistration.getLoginButtonIcon(); this.loginButtonIcon = clientRegistration.getLoginButtonIcon();
this.additionalInfo = clientRegistration.getAdditionalInfo();
OAuth2MapperConfig mapperConfig = clientRegistration.getMapperConfig(); OAuth2MapperConfig mapperConfig = clientRegistration.getMapperConfig();
if (mapperConfig != null) { if (mapperConfig != null) {
this.allowUserCreation = mapperConfig.isAllowUserCreation(); this.allowUserCreation = mapperConfig.isAllowUserCreation();
@ -156,6 +163,7 @@ public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRe
clientRegistration.setTenantId(new TenantId(tenantId)); clientRegistration.setTenantId(new TenantId(tenantId));
clientRegistration.setCreatedTime(createdTime); clientRegistration.setCreatedTime(createdTime);
clientRegistration.setDomainName(domainName); clientRegistration.setDomainName(domainName);
clientRegistration.setAdditionalInfo(additionalInfo);
clientRegistration.setMapperConfig( clientRegistration.setMapperConfig(
OAuth2MapperConfig.builder() OAuth2MapperConfig.builder()
.allowUserCreation(allowUserCreation) .allowUserCreation(allowUserCreation)

2
dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Utils.java

@ -76,6 +76,7 @@ public class OAuth2Utils {
.clientAuthenticationMethod(oAuth2ClientRegistration.getClientAuthenticationMethod()) .clientAuthenticationMethod(oAuth2ClientRegistration.getClientAuthenticationMethod())
.loginButtonLabel(oAuth2ClientRegistration.getLoginButtonLabel()) .loginButtonLabel(oAuth2ClientRegistration.getLoginButtonLabel())
.loginButtonIcon(oAuth2ClientRegistration.getLoginButtonIcon()) .loginButtonIcon(oAuth2ClientRegistration.getLoginButtonIcon())
.additionalInfo(oAuth2ClientRegistration.getAdditionalInfo())
.build(); .build();
} }
@ -99,6 +100,7 @@ public class OAuth2Utils {
clientRegistration.setClientAuthenticationMethod(clientRegistrationDto.getClientAuthenticationMethod()); clientRegistration.setClientAuthenticationMethod(clientRegistrationDto.getClientAuthenticationMethod());
clientRegistration.setLoginButtonLabel(clientRegistrationDto.getLoginButtonLabel()); clientRegistration.setLoginButtonLabel(clientRegistrationDto.getLoginButtonLabel());
clientRegistration.setLoginButtonIcon(clientRegistrationDto.getLoginButtonIcon()); clientRegistration.setLoginButtonIcon(clientRegistrationDto.getLoginButtonIcon());
clientRegistration.setAdditionalInfo(clientRegistrationDto.getAdditionalInfo());
return clientRegistration; return clientRegistration;
} }
} }

1
dao/src/test/java/org/thingsboard/server/dao/service/BaseOAuth2ConfigTemplateServiceTest.java

@ -107,6 +107,7 @@ public class BaseOAuth2ConfigTemplateServiceTest extends AbstractServiceTest {
OAuth2ClientRegistrationTemplate clientRegistrationTemplate = new OAuth2ClientRegistrationTemplate(); OAuth2ClientRegistrationTemplate clientRegistrationTemplate = new OAuth2ClientRegistrationTemplate();
clientRegistrationTemplate.setProviderId(providerId); clientRegistrationTemplate.setProviderId(providerId);
clientRegistrationTemplate.setTenantId(tenantId); clientRegistrationTemplate.setTenantId(tenantId);
clientRegistrationTemplate.setAdditionalInfo(mapper.createObjectNode().put(UUID.randomUUID().toString(), UUID.randomUUID().toString()));
clientRegistrationTemplate.setBasic( clientRegistrationTemplate.setBasic(
OAuth2BasicMapperConfig.builder() OAuth2BasicMapperConfig.builder()
.firstNameAttributeKey("firstName") .firstNameAttributeKey("firstName")

1
dao/src/test/java/org/thingsboard/server/dao/service/BaseOAuth2ServiceTest.java

@ -300,6 +300,7 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
clientRegistration.setClientAuthenticationMethod("clientAuthenticationMethod"); clientRegistration.setClientAuthenticationMethod("clientAuthenticationMethod");
clientRegistration.setLoginButtonLabel("loginButtonLabel"); clientRegistration.setLoginButtonLabel("loginButtonLabel");
clientRegistration.setLoginButtonIcon("loginButtonIcon"); clientRegistration.setLoginButtonIcon("loginButtonIcon");
clientRegistration.setAdditionalInfo(mapper.createObjectNode().put(UUID.randomUUID().toString(), UUID.randomUUID().toString()));
return clientRegistration; return clientRegistration;
} }
} }

Loading…
Cancel
Save