aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-db-dao
diff options
context:
space:
mode:
authorJacek <jacek.poreda@sonarsource.com>2020-11-25 16:19:57 +0100
committersonartech <sonartech@sonarsource.com>2020-12-02 20:06:57 +0000
commit89d9f0efa05022bb7577ff0d2014accc580da0a6 (patch)
tree1e546bc942ba1f24e551983d2847cc8b91858d91 /server/sonar-db-dao
parent344a9c94aaf3478f9c0362b5977fbda84352440a (diff)
downloadsonarqube-89d9f0efa05022bb7577ff0d2014accc580da0a6.tar.gz
sonarqube-89d9f0efa05022bb7577ff0d2014accc580da0a6.zip
SONAR-14175 Add 'reset_password' column to 'users' table
- add and populate 'reset_password' column in users table - add boolean 'resetPassword' to UserDto
Diffstat (limited to 'server/sonar-db-dao')
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/user/UserDto.java10
-rw-r--r--server/sonar-db-dao/src/main/resources/org/sonar/db/user/UserMapper.xml4
-rw-r--r--server/sonar-db-dao/src/schema/schema-sq.ddl3
-rw-r--r--server/sonar-db-dao/src/test/java/org/sonar/db/user/UserDaoTest.java36
4 files changed, 51 insertions, 2 deletions
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/user/UserDto.java b/server/sonar-db-dao/src/main/java/org/sonar/db/user/UserDto.java
index c81e64516bd..0f7a0b59f1c 100644
--- a/server/sonar-db-dao/src/main/java/org/sonar/db/user/UserDto.java
+++ b/server/sonar-db-dao/src/main/java/org/sonar/db/user/UserDto.java
@@ -54,6 +54,7 @@ public class UserDto {
private boolean local = true;
private boolean root = false;
private boolean onboarded = false;
+ private boolean resetPassword = false;
/**
* Date of the last time the user has accessed to the server.
@@ -261,6 +262,15 @@ public class UserDto {
return this;
}
+ public boolean isResetPassword() {
+ return resetPassword;
+ }
+
+ public UserDto setResetPassword(boolean resetPassword) {
+ this.resetPassword = resetPassword;
+ return this;
+ }
+
@CheckForNull
public Long getLastConnectionDate() {
return lastConnectionDate;
diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/user/UserMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/user/UserMapper.xml
index a1b5e6eca7b..8909e23aafa 100644
--- a/server/sonar-db-dao/src/main/resources/org/sonar/db/user/UserMapper.xml
+++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/user/UserMapper.xml
@@ -19,6 +19,7 @@
u.user_local as "local",
u.is_root as "root",
u.onboarded as "onboarded",
+ u.reset_password as "resetPassword",
u.homepage_type as "homepageType",
u.homepage_parameter as "homepageParameter",
u.last_connection_date as "lastConnectionDate",
@@ -216,6 +217,7 @@
hash_method,
is_root,
onboarded,
+ reset_password,
homepage_type,
homepage_parameter,
created_at,
@@ -236,6 +238,7 @@
#{user.hashMethod,jdbcType=VARCHAR},
#{user.root,jdbcType=BOOLEAN},
#{user.onboarded,jdbcType=BOOLEAN},
+ #{user.resetPassword,jdbcType=BOOLEAN},
#{user.homepageType,jdbcType=VARCHAR},
#{user.homepageParameter,jdbcType=VARCHAR},
#{user.createdAt,jdbcType=BIGINT},
@@ -255,6 +258,7 @@
external_identity_provider = #{user.externalIdentityProvider, jdbcType=VARCHAR},
user_local = #{user.local, jdbcType=BOOLEAN},
onboarded = #{user.onboarded, jdbcType=BOOLEAN},
+ reset_password = #{user.resetPassword, jdbcType=BOOLEAN},
salt = #{user.salt, jdbcType=VARCHAR},
crypted_password = #{user.cryptedPassword, jdbcType=BIGINT},
hash_method = #{user.hashMethod, jdbcType=VARCHAR},
diff --git a/server/sonar-db-dao/src/schema/schema-sq.ddl b/server/sonar-db-dao/src/schema/schema-sq.ddl
index e4effd33c0b..c3278219308 100644
--- a/server/sonar-db-dao/src/schema/schema-sq.ddl
+++ b/server/sonar-db-dao/src/schema/schema-sq.ddl
@@ -981,7 +981,8 @@ CREATE TABLE "USERS"(
"HOMEPAGE_PARAMETER" VARCHAR(40),
"LAST_CONNECTION_DATE" BIGINT,
"CREATED_AT" BIGINT,
- "UPDATED_AT" BIGINT
+ "UPDATED_AT" BIGINT,
+ "RESET_PASSWORD" BOOLEAN NOT NULL
);
ALTER TABLE "USERS" ADD CONSTRAINT "PK_USERS" PRIMARY KEY("UUID");
CREATE UNIQUE INDEX "USERS_LOGIN" ON "USERS"("LOGIN");
diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/user/UserDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/user/UserDaoTest.java
index a3e1672e96c..41989df68b3 100644
--- a/server/sonar-db-dao/src/test/java/org/sonar/db/user/UserDaoTest.java
+++ b/server/sonar-db-dao/src/test/java/org/sonar/db/user/UserDaoTest.java
@@ -308,6 +308,35 @@ public class UserDaoTest {
}
@Test
+ public void insert_user_with_default_values() {
+ UserDto userDto = new UserDto()
+ .setLogin("john")
+ .setName("John")
+ .setEmail("jo@hn.com")
+ .setExternalLogin("john-1")
+ .setExternalIdentityProvider("sonarqube")
+ .setExternalId("EXT_ID");
+ underTest.insert(db.getSession(), userDto);
+ db.getSession().commit();
+
+ UserDto user = underTest.selectActiveUserByLogin(session, "john");
+ assertThat(user).isNotNull();
+ assertThat(user.getUuid()).isNotNull();
+ assertThat(user.isActive()).isTrue();
+ assertThat(user.isOnboarded()).isFalse();
+ assertThat(user.isResetPassword()).isFalse();
+ assertThat(user.isLocal()).isTrue();
+ assertThat(user.isRoot()).isFalse();
+
+ assertThat(user.getScmAccountsAsList()).isEmpty();
+ assertThat(user.getScmAccounts()).isNull();
+ assertThat(user.getHashMethod()).isNull();
+ assertThat(user.getLastConnectionDate()).isNull();
+ assertThat(user.getHomepageType()).isNull();
+ assertThat(user.getHomepageParameter()).isNull();
+ }
+
+ @Test
public void insert_user() {
long date = DateUtils.parseDate("2014-06-20").getTime();
@@ -318,6 +347,7 @@ public class UserDaoTest {
.setScmAccounts(",jo.hn,john2,")
.setActive(true)
.setOnboarded(true)
+ .setResetPassword(true)
.setSalt("1234")
.setCryptedPassword("abcd")
.setHashMethod("SHA1")
@@ -340,6 +370,7 @@ public class UserDaoTest {
assertThat(user.getEmail()).isEqualTo("jo@hn.com");
assertThat(user.isActive()).isTrue();
assertThat(user.isOnboarded()).isTrue();
+ assertThat(user.isResetPassword()).isTrue();
assertThat(user.getScmAccounts()).isEqualTo(",jo.hn,john2,");
assertThat(user.getSalt()).isEqualTo("1234");
assertThat(user.getCryptedPassword()).isEqualTo("abcd");
@@ -372,7 +403,8 @@ public class UserDaoTest {
.setEmail("jo@hn.com")
.setActive(true)
.setLocal(true)
- .setOnboarded(false));
+ .setOnboarded(false)
+ .setResetPassword(false));
underTest.update(db.getSession(), newUserDto()
.setUuid(user.getUuid())
@@ -382,6 +414,7 @@ public class UserDaoTest {
.setScmAccounts(",jo.hn,john2,johndoo,")
.setActive(false)
.setOnboarded(true)
+ .setResetPassword(true)
.setSalt("12345")
.setCryptedPassword("abcde")
.setHashMethod("BCRYPT")
@@ -401,6 +434,7 @@ public class UserDaoTest {
assertThat(reloaded.getEmail()).isEqualTo("jodoo@hn.com");
assertThat(reloaded.isActive()).isFalse();
assertThat(reloaded.isOnboarded()).isTrue();
+ assertThat(reloaded.isResetPassword()).isTrue();
assertThat(reloaded.getScmAccounts()).isEqualTo(",jo.hn,john2,johndoo,");
assertThat(reloaded.getSalt()).isEqualTo("12345");
assertThat(reloaded.getCryptedPassword()).isEqualTo("abcde");