Mark issues created by banned users as hidden

What does this MR do?

Introduce hidden attribute for issues. When a user gets banned (introduced by !61292 (merged)), set that user's issues to hidden. This MR only sets issue.hidden? to true (or false when the author is unbanned), and does not actually prevent access to that issue or exclude it from open issues count. That functionality will be implemented in a follow-up MR: !63700 (closed) (WIP)

DB migration output:

% rails db:migrate
== 20210608211735 AddHiddenToIssues: migrating ================================
-- add_column(:issues, :hidden, :boolean, {:default=>false})
   -> 0.0044s
== 20210608211735 AddHiddenToIssues: migrated (0.0045s) =======================


% rails db:rollback STEP=1
== 20210608211735 AddHiddenToIssues: reverting ================================
-- remove_column(:issues, :hidden)
   -> 0.0053s
== 20210608211735 AddHiddenToIssues: reverted (0.0054s) =======================

In #database-lab:

explain UPDATE "issues" SET "hidden" = TRUE WHERE "issues"."author_id" = 5966677

https://postgres.ai/console/gitlab/gitlab-production-tunnel-pg12/sessions/4548/commands/16012

  • SELECT "issues"."id" FROM "issues" WHERE "issues"."author_id" = 1 ORDER BY "issues"."id" ASC LIMIT 1

https://console.postgres.ai/gitlab/gitlab-production-tunnel-pg12/sessions/4544/commands/15994

  • SELECT "issues"."id" FROM "issues" WHERE "issues"."author_id" = 1 AND "issues"."id" >= 965 ORDER BY "issues"."id" ASC LIMIT 1 OFFSET 100

https://console.postgres.ai/gitlab/gitlab-production-tunnel-pg12/sessions/4544/commands/15995

  • UPDATE "issues" SET "hidden" = TRUE WHERE "issues"."author_id" = 1 AND "issues"."id" >= 965 AND "issues"."id" < 22437

https://console.postgres.ai/gitlab/gitlab-production-tunnel-pg12/sessions/4544/commands/15996

Screenshots (strongly suggested)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

Does this MR contain changes to processing or storing of credentials or tokens, authorization and authentication methods or other items described in the security review guidelines? If not, then delete this Security section.

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team
Edited by Serena Fang

Merge request reports

Loading