[NP-2927] Add DAO decorator to warn about (or redirect) system context #4398
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.
BACKGROUND
We have two nspecs for capabilityDAO:
capabilityDAO
andlocalCapabilityDAO
. capabilityDAO is served, while localCapabilityDAO is intended for use by the system.CapabilityAuthService, as well as a number of rules, are accessing
capabilityDAO
with a system context, which introduces an inconsistency - the possibility of a system context - that each DAO decorator in capabilityDAO has to deal with individually.THIS PR
PreventSystemDAO is a DAO decorator that prevents a system context from accessing a DAO. It can be configured with three modes of operation:
ABORT_REQUEST
: the default behaviour; do not handle the request. May produce an alarm.REDIRECT_REQUEST
: log a warning, but redirect system context requests to the appropriate DAO (likelocalCapabilityDAO
)WARN_ONLY
: just warn about system contexts; don't modify behaviour. This is a helpful first-step for finding the common cases.