https://ones.com/blog/knowledge/mastering-user-group-role-permission-data-models/