How to create access permissions system similar to Organic Groups access, using Eck entities
If you'd be willing to use the Group module, then you could do like so:


You can configure a Group Type named "Project", so that this Group Type would replace your entity type project.
You can create 1 Group (of group type "Project") for each of your Projects (each Group probably labelled with the name of a specific project).
You can assign nodes to a Group (of group type "Project"), so that these nodes would replace your project content entity types.


Group is available as of D7, and has a D8 version also. It is designed to be an alternative to Organic Groups. The Group module creates groups as entities, making them fully fieldable, extensible and exportable.

With the above in place, you also have the permission system you're looking for, out-of-the-Group-box.

More info:


Refer to "What are the various roles supported by the Group module?" for more details about the supported roles.
Refer to my answer to "How to configure access to courses for teachers and students?" for a sample configuration.


Integration with various modules

The Group module integrates with various other (popular) modules, including:


Rules, as illustrated in the answer to the question "How to bulk assign existing content to a group created with the Group module?".
Views, as illustrated in the answer to the question "How to show the content of a group on the group page when using the Group module?".
Pathauto.


The beauty, IMO, of these integrations are that they are more or less out-of-the box (not dozens of extra modules needed to make those integrations work).

Resources


Community documentation for the Group module.
Video tutorial "How to use the Group module in Drupal 8 to manage editorial access control to different areas of a web site".