Backport of Add ListResolvableAliases to the user service into release/0.16.x #4662
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Backport
This PR is auto-generated from #4609 to be assessed for backporting due to the inclusion of the label backport/0.16.x.
The below text is copied from the body of the original PR.
There are a few non common ways this method uses our ACL and grant system. A user is able to list resolvable aliases for another user if they are granted permission to do so. That means we had to load the grants for the user being listed for anot not the requester when determining if an alias is able to resolve to a destination for which the requested user has permission.
Similarly, the grant hash used for the list pagination is required to be that of the user being listed and not the requester.
Note: This follows the approach we have taken with the original pagination of aliases and has put off generalizing the pagination logic to generic alias type and instead implements it for the specific target subtype for the sake of speed of implementation, and because it is still unclear what benefit any other type of alias would have yet and if we'll ever get to there. If we decide to implement another subtype of alias, the existing pagination logic will need to be refactored anyways at which time this same logic would be easier to refactor as well.