Remove ultimate trial banner for non-group owning users
requested to merge 327043-remove-ultimate-trial-banner-for-users-that-are-not-already-a-group-admin into master
What does this MR do?
Remove ultimate trial banner for users that are not already a group admin
Related to #327043
Screenshots
Current | After |
---|---|
The banner and the top right user menu item aren't shown unless the user owns a group |
Queries
Before
We remove one of the union queries (for namespaces). So we have a better query plan.
- I have used both queries warm, because they interfere
- Also the result for the top menu is cached.
https://explain.depesz.com/s/K6Zq
explain SELECT 1 AS one FROM ((SELECT "namespaces"."id" FROM "namespaces" WHERE "namespaces"."type" IS NULL AND "namespaces"."owner_id" = 4409816)
UNION
(SELECT "namespaces"."id" FROM "namespaces" INNER JOIN "members" ON "namespaces"."id" = "members"."source_id" WHERE "members"."type" = 'GroupMember' AND "members"."source_type" = 'Namespace' AND "namespaces"."type" = 'Group' AND "members"."user_id" = 4409816 AND "members"."requested_at" IS NULL AND (access_level >= 10) AND "members"."access_level" IN (20, 30, 40, 50) AND "namespaces"."parent_id" IS NULL)) namespaces LEFT OUTER JOIN "gitlab_subscriptions" ON "gitlab_subscriptions"."namespace_id" = "namespaces"."id" WHERE "gitlab_subscriptions"."trial_ends_on" IS NULL LIMIT 1
After
https://explain.depesz.com/s/qv1H
SELECT 1 AS one
FROM "namespaces"
INNER JOIN "members" ON "namespaces"."id" = "members"."source_id"
LEFT OUTER JOIN "gitlab_subscriptions" ON "gitlab_subscriptions"."namespace_id" = "namespaces"."id"
WHERE "members"."type" = 'GroupMember'
AND "members"."source_type" = 'Namespace'
AND "namespaces"."type" = 'Group'
AND "members"."user_id" = 4409816
AND "members"."requested_at" IS NULL
AND (access_level >= 10)
AND "members"."access_level" = 50
AND "namespaces"."parent_id" IS NULL
AND "gitlab_subscriptions"."trial_ends_on" IS NULL
LIMIT 1
Older query union
https://explain.depesz.com/s/tSKZ
SELECT 1 AS one
FROM (
(SELECT "namespaces"."id"
FROM "namespaces"
INNER JOIN "members" ON "namespaces"."id" = "members"."source_id"
WHERE "members"."type" = 'GroupMember'
AND "members"."source_type" = 'Namespace'
AND "namespaces"."type" = 'Group'
AND "members"."user_id" = 4409816
AND "members"."requested_at" IS NULL
AND (access_level >= 10)
AND "members"."access_level" = 50
AND "namespaces"."parent_id" IS NULL)) namespaces
LEFT OUTER JOIN "gitlab_subscriptions" ON "gitlab_subscriptions"."namespace_id" = "namespaces"."id"
WHERE "gitlab_subscriptions"."trial_ends_on" IS NULL
LIMIT 1
Does this MR meet the acceptance criteria?
Conformity
-
📋 Does this MR need a changelog?-
I have included a changelog entry. -
I have not included a changelog entry because _____.
-
-
Documentation (if required) -
Code review guidelines -
Merge request performance guidelines -
Style guides -
Database guides -
Separation of EE specific content
Availability and Testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. -
Tested in all supported browsers -
Informed Infrastructure department of a default or new setting change, if applicable per definition of done
Security
If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:
-
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 Alper Akgun