diff options
author | Jacek <jacek.poreda@sonarsource.com> | 2020-11-25 16:19:57 +0100 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2020-12-02 20:06:57 +0000 |
commit | 89d9f0efa05022bb7577ff0d2014accc580da0a6 (patch) | |
tree | 1e546bc942ba1f24e551983d2847cc8b91858d91 /server/sonar-db-dao | |
parent | 344a9c94aaf3478f9c0362b5977fbda84352440a (diff) | |
download | sonarqube-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')
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"); |