Specific authorization, avoid confusion.
With each specific role, users will have different rights to the project. There is much decentralization, giving many options in the project. Different roles will have different abilities.
Allow users to grant permissions in the project: admin, member and viewer.