return false;
}
- mapper.removeUserFromGroups(dto.getId());
mapper.deleteUserProperties(dto.getId());
mapper.deleteUserRoles(dto.getId());
mapper.deletePropertiesMatchingLogin(singletonList(DEFAULT_ISSUE_ASSIGNEE), dto.getLogin());
mapper(dbSession).deleteByOrganizationAndUser(organizationUuid, userId);
}
+ public void deleteByUserId(DbSession dbSession, int userId) {
+ mapper(dbSession).deleteByUserId(userId);
+ }
+
private static UserGroupMapper mapper(DbSession session) {
return session.getMapper(UserGroupMapper.class);
}
void deleteByGroupId(@Param("groupId") int groupId);
void deleteByOrganizationAndUser(@Param("organizationUuid") String organizationUuid, @Param("userId") int userId);
+
+ void deleteByUserId(@Param("userId") int userId);
}
void setRoot(@Param("login") String login, @Param("root") boolean root, @Param("now") long now);
- void removeUserFromGroups(int userId);
-
void deleteUserProperties(int userId);
void deleteUserRoles(int userId);
group_id in (select id from groups where organization_uuid=#{organizationUuid,jdbcType=VARCHAR})
</delete>
+ <delete id="deleteByUserId" parameterType="int">
+ DELETE FROM groups_users WHERE user_id=#{userId,jdbcType=INTEGER}
+ </delete>
+
</mapper>
and u.login <> #{login}
</select>
- <delete id="removeUserFromGroups" parameterType="int">
- DELETE FROM groups_users WHERE user_id=#{id}
- </delete>
-
<delete id="deleteUserRoles" parameterType="int">
DELETE FROM user_roles WHERE user_id=#{id,jdbcType=INTEGER}
</delete>
assertThat(dbTester.getDbClient().groupMembershipDao().selectGroupIdsByUserId(dbTester.getSession(), user2.getId())).containsOnly(group2.getId());
}
-
@Test
public void delete_organization_member() {
OrganizationDto organization = dbTester.organizations().insert();
assertThat(dbClient.groupMembershipDao().selectGroupIdsByUserId(dbSession, anotherUser.getId()))
.containsOnly(group.getId(), anotherGroup.getId());
}
+
+ @Test
+ public void delete_by_user() throws Exception {
+ UserDto user1 = dbTester.users().insertUser();
+ UserDto user2 = dbTester.users().insertUser();
+ GroupDto group1 = dbTester.users().insertGroup();
+ GroupDto group2 = dbTester.users().insertGroup();
+ dbTester.users().insertMember(group1, user1);
+ dbTester.users().insertMember(group1, user2);
+ dbTester.users().insertMember(group2, user1);
+ dbTester.users().insertMember(group2, user2);
+
+ underTest.deleteByUserId(dbTester.getSession(), user1.getId());
+ dbTester.getSession().commit();
+
+ assertThat(dbTester.getDbClient().groupMembershipDao().selectGroupIdsByUserId(dbTester.getSession(), user1.getId())).isEmpty();
+ assertThat(dbTester.getDbClient().groupMembershipDao().selectGroupIdsByUserId(dbTester.getSession(), user2.getId())).containsOnly(group1.getId(), group2.getId());
+ }
}
ensureNotLastAdministrator(dbSession, user);
dbClient.userTokenDao().deleteByLogin(dbSession, login);
+ dbClient.userGroupDao().deleteByUserId(dbSession, user.getId());
dbClient.userDao().deactivateUserByLogin(dbSession, login);
dbSession.commit();
}
import org.sonar.db.organization.OrganizationDto;
import org.sonar.db.property.PropertyDto;
import org.sonar.db.property.PropertyQuery;
+import org.sonar.db.user.GroupDto;
import org.sonar.db.user.UserDto;
import org.sonar.server.es.EsTester;
import org.sonar.server.exceptions.BadRequestException;
assertThat(index.getNullableByLogin(user.getLogin()).active()).isFalse();
}
+ @Test
+ public void deactivate_user_deletes_his_group_membership() {
+ logInAsSystemAdministrator();
+ UserDto user = insertUser(newUserDto());
+ GroupDto group1 = db.users().insertGroup();
+ db.users().insertGroup();
+ db.users().insertMember(group1, user);
+
+ deactivate(user.getLogin()).getInput();
+
+ assertThat(db.getDbClient().groupMembershipDao().selectGroupIdsByUserId(dbSession, user.getId())).isEmpty();
+ }
+
@Test
public void deactivate_user_deletes_his_tokens() {
logInAsSystemAdministrator();