From 133c8f9ae4178095f1742242fd9361e11eed3d46 Mon Sep 17 00:00:00 2001 From: dashevchenko Date: Wed, 15 Feb 2023 12:25:30 +0200 Subject: [PATCH] added new column for user_credentials table --- .../main/data/upgrade/3.4.4/schema_update.sql | 17 +++++++++++++++ .../common/data/security/UserCredentials.java | 21 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/application/src/main/data/upgrade/3.4.4/schema_update.sql b/application/src/main/data/upgrade/3.4.4/schema_update.sql index f8c133f352..83d148e914 100644 --- a/application/src/main/data/upgrade/3.4.4/schema_update.sql +++ b/application/src/main/data/upgrade/3.4.4/schema_update.sql @@ -30,3 +30,20 @@ CREATE TABLE IF NOT EXISTS user_settings ( settings varchar(100000), CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES tb_user(id) ON DELETE CASCADE ); + +-- move password history from user to user_credentials table +ALTER TABLE user_credentials + ADD COLUMN IF NOT EXISTS additional_info varchar; + +CREATE OR REPLACE PROCEDURE migrate_password_history() + LANGUAGE plpgsql AS +$$ +BEGIN + UPDATE user_credentials AS c + SET additional_info = u.additional_info + FROM tb_user AS u + WHERE u.id = c.id; +END; +$$; +-- USER PASSWORD MIGRATION END +call migrate_password_history(); \ No newline at end of file diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/security/UserCredentials.java b/common/data/src/main/java/org/thingsboard/server/common/data/security/UserCredentials.java index 900fd966e8..16cf5f090d 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/security/UserCredentials.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/security/UserCredentials.java @@ -15,10 +15,17 @@ */ package org.thingsboard.server.common.data.security; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.JsonNode; import lombok.EqualsAndHashCode; import org.thingsboard.server.common.data.BaseData; import org.thingsboard.server.common.data.id.UserCredentialsId; import org.thingsboard.server.common.data.id.UserId; +import org.thingsboard.server.common.data.validation.Length; +import org.thingsboard.server.common.data.validation.NoXss; + +import static org.thingsboard.server.common.data.SearchTextBasedWithAdditionalInfo.getJson; +import static org.thingsboard.server.common.data.SearchTextBasedWithAdditionalInfo.setJson; @EqualsAndHashCode(callSuper = true) public class UserCredentials extends BaseData { @@ -30,6 +37,20 @@ public class UserCredentials extends BaseData { private String password; private String activateToken; private String resetToken; + + @NoXss + private transient JsonNode additionalInfo; + + @JsonIgnore + private byte[] additionalInfoBytes; + + public JsonNode getAdditionalInfo() { + return getJson(() -> additionalInfo, () -> additionalInfoBytes); + } + + public void setAdditionalInfo(JsonNode settings) { + setJson(settings, json -> this.additionalInfo = json, bytes -> this.additionalInfoBytes = bytes); + } public UserCredentials() { super();