update method getEvaluatorForAlertRule to accept permissions evaluator and exit on the first negative result, which is more effective than returning an evaluator that in fact is a bunch of slices.
// authorizeRuleChanges analyzes changes in the rule group, determines what actions the user is trying to perform and check whether those actions are authorized.
returnfmt.Errorf("%w to create a new alert rule '%s' because the user does not have read permissions for one or many datasources the rule uses",ErrAuthorization,rule.Title)
returnfmt.Errorf("%w to update alert rule '%s' (UID: %s) because the user does not have read permissions for one or many datasources the rule uses",ErrAuthorization,rule.Existing.Title,rule.Existing.UID)