Security Dashboard Fails to Add Project With Unknown Error - backend
Summary
Adding a project to the security dashboard results in an error that does not guide the user into what went wrong. It's likely a non Ultimate account.
Steps to reproduce
On Gitlab.com click [More /] in the navigation bar. Click [Security] Add a project to the dashboard Get non-descript error that doesn't tell me why it can't be added.
-- > You are missing an opportunity to upsell!
Example Project
https://gitlab.com/simplesense/monolith -- Account is currently Silver, not ultimate.
What is the current bug behavior?
I get a notification that says "error" can't add this project to the dashboard.
What is the expected correct behavior?
Gitlab notifies me that I need to upgrade my plan to add a project to the Security dashboard.
Relevant logs and/or screenshots
Output of checks
This bug happens on GitLab.com.
Results of GitLab environment info
Results of GitLab application Check
Possible fixes
This UX made me search for why I couldn't add a repo to my security dashboard, wasting valuable time. It could be that my repo isn't compatible, I selected things wrong, the gitlab-ci.yml is wrong, or that my subscription isn't the right level. It gives me zero insight into how to solve my problem.
A potential fix would be to at least tell me if I fail based on account type and ask me to upgrade.
Implementation plan
-
backend modify/refactor Dashboard::Projects::CreateService
to check if provided project can be added to the dashboard instead of usingDashboard::Projects::ListService
to filter out projects that are not licensed to be added to the dashboard; that logic should check and reply with proper error message (reuse logic fromDashboard::Projects::ListService
) if:-
user that is trying to add project to the instance security dashboard has no permission to do it, -
project that user is trying to add does not have Project Security Dashboard, because it is not licensed with Gold/Ultimate license, -
project cannot be added because it was already added before,
-
-
backend modify Mutations::InstanceSecurityDashboard::AddProject
to build error message based on the response from refactoredDashboard::Projects::CreateService
, return error message inerrors
, -
backend modifySecurity::ProjectsController#create
to build error message based on the response from refactoredDashboard::Projects::CreateService
, return error message inerrors
by extending the response format,