expose permissions on types
What does this MR do?
This provides a reusable way to expose permissions for the current user to resources in GraphQL.
The permissions are exposed through a userPermission
field, that has a certain type for a resource. The field contains a boolean field for each exposed permission.
A query could look like this:
{
project(fullPath: "twitter/typeahead-js") {
mergeRequest(iid: "1") {
userPermissions {
readMergeRequest
adminMergeRequest
pushToSourceBranch
cherryPickOnCurrentMergeRequest
revertOnCurrentMergeRequest
}
}
}
}
With this kind of response:
{
"data": {
"project": {
"mergeRequest": {
"userPermissions": {
"readMergeRequest": true,
"adminMergeRequest": false,
"pushToSourceBranch": false,
"cherryPickOnCurrentMergeRequest": false,
"revertOnCurrentMergeRequest": false
}
}
}
}
}
Are there points in the code the reviewer needs to double check?
Why was this MR needed?
Screenshots (if relevant)
Does this MR meet the acceptance criteria?
-
Changelog entry added, if necessary -
Documentation created/updated -
API support added -
Tests added for this feature/bug - Conform by the code review guidelines
-
Has been reviewed by a UX Designer -
Has been reviewed by a Frontend maintainer -
Has been reviewed by a Backend maintainer -
Has been reviewed by a Database specialist
-
-
Conform by the merge request performance guides -
Conform by the style guides -
If you have multiple commits, please combine them into a few logically organized commits by squashing them -
Internationalization required/considered -
End-to-end tests pass ( package-and-qa
manual pipeline job)
What are the relevant issue numbers?
Edited by Bob Van Landuyt