The access restriction pattern should be used in the following cases, when:
- Some functions should only be allowed to be executed from certain roles
- Similar kinds of roles and access are needed for one or more functions or actions
- You want to improve the security of the contracts from unauthorized function calls