Hi @cjea, sorry for the late response.
Using a regex match seems a bit suspicious to me. Does the regex grow for every user that Alice blocks? ^(Bob|Charlie|...). Is it a performance concern?
I think your regex way is not bad. There are also some other alternatives:
Define a custom function like isBlockingUser(userA, userB), so you can define your own logic inside it and use it in the matcher or policy (with eval()).
Use the deny-override model, define each blocked user as a policy, like:
p, alice, *, send, bob, denyAnd if regex is the correct way to go, it feels a bit clumsy because the "recipient" field only applies to the "send" action, and not "save".
You can use keyMatch() or regexMatch() to wrap two actions into one: send|save